Tests schrijven en code beveiligen met AI

AI-ondersteund coderen voor developers

Francesca Donadoni

AI Curriculum Manager, DataCamp

Test-driven prompten

☺ Normaal prompten

Schrijf een Python-functie die e-mailadressen parseert.

🤓 Test-driven prompten

Schrijf een Python-functie die e-mailadressen parseert. Die moet slagen voor deze tests:

  • Accepteert een geldig adres zoals "[email protected]".
  • Wijst ongeldige invoer af zoals "user@@domain".
  • Geeft een ValueError bij lege invoer.
AI-ondersteund coderen voor developers

Test-driven prompten

  • User prompt: Genereer unittests in Python voor een functie die door gebruikers verzonden formulierdata verwerkt en in een SQL-database invoegt.

  • Model response:

Hier is een kant-en-klare pytest-suite die validatie, normalisatie, bescherming tegen SQL-injectie en transactiegedrag dekt voor een functie die formulierdata verwerkt en een record in een SQL-database invoegt.

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

@pytest.fixture()
def conn():
    """In-memory SQLite DB with a users table."""
    c = sqlite3.connect(":memory:") [...]
AI-ondersteund coderen voor developers

Test-driven prompten

  • User prompt: Genereer Python-unittests met pytest voor de volgende functie. Neem gevallen op voor lege invoer, SQL-trefwoorden in de invoer en speciale tekens. Ga uit van een mock-databaseverbinding. <INSERT FUNCTION>

  • Model response:

Hier is een self-contained pytest-testmodule die mocks gebruikt (geen echte DB) en lege invoer, SQL-trefwoorden en speciale tekens dekt. Er wordt ook gecontroleerd op commit/close-gedrag en dat uitzonderingen worden onderdrukt.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
AI-ondersteund coderen voor developers

Prompten voor security

☺ Normaal prompten

$$

Scan de volgende Python-functie op mogelijke kwetsbaarheden en stel veiligere alternatieven voor als die worden gevonden.

🤓 Test-driven prompten

$$

Beoordeel deze code op veelvoorkomende webbeveiligingsproblemen, waaronder SQL-injectie, XSS en gebreken in invoervalidatie.

AI-ondersteund coderen voor developers

OWASP Top 10

OWASP Top 10

AI-ondersteund coderen voor developers

OWASP Top 10

  • User prompt: Audit de volgende functie op OWASP Top 10-kwetsbaarheden.
def login(username, password):
   query = f"SELECT * FROM users WHERE username = '{username}' \
           AND password = '{password}'"
   result = db.execute(query)
   return result.fetchone()
  • Model response:

Hier is een gerichte OWASP Top 10-audit van je loginfunctie, plus een veiligere herschrijving.

  1. A03: Injection. Directe stringinterpolatie in SQL maakt dit triviaal SQL-injecteerbaar. Voorbeeldpayloads:
    • username = "admin' --" → omzeilt wachtwoordcontrole. [...]
AI-ondersteund coderen voor developers

Laten we oefenen!

AI-ondersteund coderen voor developers

Preparing Video For Download...