Scriere de teste și securizarea codului cu AI

Programare asistată de AI pentru dezvoltatori

Francesca Donadoni

AI Curriculum Manager, DataCamp

Prompt bazat pe teste

☺ Prompt Obișnuit

Scrieți o funcție Python pentru a analiza adrese de e-mail.

🤓 Prompt Bazat pe Teste

Scrieți o funcție Python pentru a analiza adrese de e-mail. Aceasta trebuie să treacă următoarele teste:

  • Acceptă o adresă validă, cum ar fi „[email protected]".
  • Respinge o intrare invalidă, cum ar fi „user@@domain".
  • Generează un ValueError pentru intrări goale.
Programare asistată de AI pentru dezvoltatori

Prompt bazat pe teste

  • Prompt utilizator: Generați teste unitare în Python pentru o funcție care procesează date dintr-un formular trimis de utilizator și le inserează într-o bază de date SQL.

  • Răspuns model:

Iată o suită pytest funcțională care acoperă validarea, normalizarea, siguranța la SQL injection și comportamentul tranzacțiilor pentru o funcție ce procesează date din formular și inserează o înregistrare în baza de date SQL.

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

@pytest.fixture()
def conn():
    """In-memory SQLite DB with a users table."""
    c = sqlite3.connect(":memory:") [...]
Programare asistată de AI pentru dezvoltatori

Prompt bazat pe teste

  • Prompt utilizator: Generați teste unitare Python folosind pytest pentru funcția de mai jos. Includeți cazuri pentru intrări goale, cuvinte cheie SQL în intrare și caractere speciale. Presupuneți o conexiune mock la baza de date. <INSERT FUNCTION>

  • Răspuns model:

Iată un modul de teste pytest autonom care utilizează mock-uri (fără o bază de date reală) și acoperă intrările goale, cuvintele cheie SQL și caracterele speciale. Verifică, de asemenea, comportamentul commit/close și gestionarea excepțiilor.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
Programare asistată de AI pentru dezvoltatori

Prompturi pentru securitate

☺ Prompt Obișnuit

$$

Scanați următoarea funcție Python pentru vulnerabilități potențiale și sugerați alternative mai sigure dacă sunt identificate.

🤓 Prompt Bazat pe Teste

$$

Analizați acest cod pentru probleme comune de securitate web, inclusiv SQL injection, XSS și deficiențe de validare a intrărilor.

Programare asistată de AI pentru dezvoltatori

OWASP Top 10

owasp_top_10.png

Programare asistată de AI pentru dezvoltatori

OWASP Top 10

  • Prompt utilizator: Auditați următoarea funcție pentru vulnerabilitățile din 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()
  • Răspuns model:

Iată un audit OWASP Top 10 al funcției de autentificare, împreună cu o variantă mai sigură.

  1. A03: Injecție. Interpolarea directă a șirurilor în SQL face funcția vulnerabilă la SQL injection. Exemple:
    • username = "admin' --" → ocolește verificarea parolei. [...]
Programare asistată de AI pentru dezvoltatori

Să exersăm!

Programare asistată de AI pentru dezvoltatori

Preparing Video For Download...