Menulis Tes dan Mengamankan Kode dengan AI

Pengembangan Kode dengan Bantuan AI untuk Developer

Francesca Donadoni

AI Curriculum Manager, DataCamp

Pemintaan Berbasis Tes

☺ Pemintaan Normal

Tulis fungsi Python untuk mem-parsing alamat email.

🤓 Pemintaan Berbasis Tes

Tulis fungsi Python untuk mem-parsing alamat email. Fungsi harus lulus tes berikut:

  • Menerima alamat valid seperti "[email protected]".
  • Menolak input tidak valid seperti "user@@domain".
  • Menghasilkan ValueError untuk input kosong.
Pengembangan Kode dengan Bantuan AI untuk Developer

Pemintaan Berbasis Tes

  • Permintaan Pengguna: Buat unit test di Python untuk fungsi yang memproses data formulir pengguna dan memasukkannya ke dalam database SQL.

  • Respon Model:

Berikut adalah suite pytest siap pakai yang mencakup validasi, normalisasi, keamanan dari injeksi SQL, dan perilaku transaksi untuk fungsi yang memproses data formulir dan memasukkan catatan ke dalam database SQL.

[...]
# ---------- Fixture DB Test ----------

@pytest.fixture()
def conn():
    """DB SQLite dalam memori dengan tabel pengguna."""
    c = sqlite3.connect(":memory:") [...]
Pengembangan Kode dengan Bantuan AI untuk Developer

Pemintaan Berbasis Tes

  • Permintaan Pengguna: Buat unit test Python menggunakan pytest untuk fungsi berikut. Sertakan kasus untuk input kosong, kata kunci SQL dalam input, dan karakter khusus. Asumsikan koneksi database tiruan. <INSERT FUNCTION>

  • Respon Model:

Berikut adalah modul tes pytest mandiri yang menggunakan tiruan (bukan DB nyata) dan mencakup input kosong, kata kunci SQL, dan karakter khusus. Juga memverifikasi perilaku commit/close dan bahwa pengecualian ditangani.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect untuk mengembalikan koneksi MagicMock + cursor.
[...]
Pengembangan Kode dengan Bantuan AI untuk Developer

Pemintaan untuk Keamanan

☺ Pemintaan Normal

$$

Pindai fungsi Python berikut untuk potensi kerentanan dan sarankan alternatif yang lebih aman jika ditemukan.

🤓 Pemintaan Berbasis Tes

$$

Tinjau kode ini untuk masalah keamanan web umum, termasuk injeksi SQL, XSS, dan kekurangan validasi input.

Pengembangan Kode dengan Bantuan AI untuk Developer

OWASP Top 10

owasp_top_10.png

Pengembangan Kode dengan Bantuan AI untuk Developer

OWASP Top 10

  • Permintaan Pengguna: Audit fungsi berikut untuk kerentanan 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()
  • Respon Model:

Berikut adalah audit OWASP Top 10 untuk fungsi login Anda, serta penulisan ulang yang lebih aman.

  1. A03: Injeksi. Interpolasi string langsung ke SQL membuatnya rentan terhadap injeksi SQL. Contoh payload:
    • username = "admin' --" → melewati pemeriksaan kata sandi. [...]
Pengembangan Kode dengan Bantuan AI untuk Developer

Ayo berlatih!

Pengembangan Kode dengan Bantuan AI untuk Developer

Preparing Video For Download...