การเขียนเทสต์และเพิ่มความปลอดภัยให้โค้ดด้วย AI

การเขียนโค้ดด้วยความช่วยเหลือของ AI สำหรับนักพัฒนา

Francesca Donadoni

AI Curriculum Manager, DataCamp

Test-Driven Prompting

☺ การ Prompt แบบทั่วไป

เขียนฟังก์ชัน Python สำหรับแยก email address.

🤓 Test-Driven Prompting

เขียนฟังก์ชัน Python สำหรับแยก email address โดยให้ผ่านเทสต์ดังต่อไปนี้:

  • รับ address ที่ถูกต้อง เช่น "[email protected]"
  • ปฏิเสธ input ที่ไม่ถูกต้อง เช่น "user@@domain"
  • โยน ValueError เมื่อ input ว่างเปล่า
การเขียนโค้ดด้วยความช่วยเหลือของ AI สำหรับนักพัฒนา

Test-Driven Prompting

  • User prompt: สร้าง unit tests ใน Python สำหรับฟังก์ชันที่ประมวลผลข้อมูลฟอร์มที่ผู้ใช้ส่งมาและบันทึกลงฐานข้อมูล SQL

  • Model response:

นี่คือชุด pytest ที่รันได้ทันที ครอบคลุมการ validation, normalization, ความปลอดภัยจาก SQL injection และพฤติกรรม transaction สำหรับฟังก์ชันที่ประมวลผลข้อมูลฟอร์มและบันทึก record ลงฐานข้อมูล SQL

[...]
# ---------- Test DB fixtures ----------

@pytest.fixture()
def conn():
    """In-memory SQLite DB with a users table."""
    c = sqlite3.connect(":memory:") [...]
การเขียนโค้ดด้วยความช่วยเหลือของ AI สำหรับนักพัฒนา

Test-Driven Prompting

  • User prompt: สร้าง Python unit tests โดยใช้ pytest สำหรับฟังก์ชันต่อไปนี้ ให้ครอบคลุมกรณี input ว่าง, SQL keyword ใน input และอักขระพิเศษ โดยใช้ mock database connection <INSERT FUNCTION>

  • Model response:

นี่คือโมดูล pytest แบบ self-contained ที่ใช้ mock (ไม่ต้องการ DB จริง) ครอบคลุม input ว่าง, SQL keyword และอักขระพิเศษ รวมถึงตรวจสอบพฤติกรรม commit/close และการจัดการ exception

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
การเขียนโค้ดด้วยความช่วยเหลือของ AI สำหรับนักพัฒนา

การ Prompt เพื่อความปลอดภัย

☺ การ Prompt แบบทั่วไป

$$

สแกนฟังก์ชัน Python ต่อไปนี้เพื่อหาช่องโหว่ที่อาจเกิดขึ้น และเสนอแนวทางที่ปลอดภัยกว่าหากพบ

🤓 Test-Driven Prompting

$$

ตรวจสอบโค้ดนี้สำหรับปัญหาความปลอดภัยของเว็บที่พบบ่อย ได้แก่ SQL injection, XSS และช่องโหว่ด้าน input validation

การเขียนโค้ดด้วยความช่วยเหลือของ AI สำหรับนักพัฒนา

OWASP Top 10

owasp_top_10.png

การเขียนโค้ดด้วยความช่วยเหลือของ AI สำหรับนักพัฒนา

OWASP Top 10

  • User prompt: ตรวจสอบฟังก์ชันต่อไปนี้สำหรับช่องโหว่ใน OWASP Top 10
def login(username, password):
   query = f"SELECT * FROM users WHERE username = '{username}' \
           AND password = '{password}'"
   result = db.execute(query)
   return result.fetchone()
  • Model response:

นี่คือผลการตรวจสอบ OWASP Top 10 สำหรับฟังก์ชัน login พร้อมการเขียนใหม่ที่ปลอดภัยกว่า

  1. A03: Injection. การใช้ string interpolation ตรงๆ ใน SQL ทำให้ฟังก์ชันนี้เสี่ยงต่อ SQL injection ได้ง่าย ตัวอย่าง payload:
    • username = "admin' --" → ข้ามการตรวจสอบรหัสผ่าน [...]
การเขียนโค้ดด้วยความช่วยเหลือของ AI สำหรับนักพัฒนา

มาฝึกกันเถอะ!

การเขียนโค้ดด้วยความช่วยเหลือของ AI สำหรับนักพัฒนา

Preparing Video For Download...