Skriva tester och säkra kod med AI

AI-assisterad kodning för utvecklare

Francesca Donadoni

AI Curriculum Manager, DataCamp

Testdriven promptning

☺ Vanlig promptning

Skriv en Python-funktion som parsar e-postadresser.

🤓 Testdriven promptning

Skriv en Python-funktion som parsar e-postadresser. Den ska klara följande tester:

  • Accepterar en giltig adress som "[email protected]".
  • Avvisar ogiltig inmatning som "user@@domain".
  • Kastar ett ValueError för tom inmatning.
AI-assisterad kodning för utvecklare

Testdriven promptning

  • Användarprompt: Generera enhetstester i Python för en funktion som bearbetar formulärdata från användare och infogar dem i en SQL-databas.

  • Modellsvar:

Här är ett körklart pytest-paket som täcker validering, normalisering, SQL-injektionssäkerhet och transaktionsbeteende för en funktion som bearbetar formulärdata och infogar en post i en SQL-databas.

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

@pytest.fixture()
def conn():
    """In-memory SQLite DB with a users table."""
    c = sqlite3.connect(":memory:") [...]
AI-assisterad kodning för utvecklare

Testdriven promptning

  • Användarprompt: Generera Python-enhetstester med pytest för följande funktion. Inkludera fall för tom inmatning, SQL-nyckelord i inmatningen och specialtecken. Anta en mockad databasanslutning. <INSERT FUNCTION>

  • Modellsvar:

Här är en fristående pytest-testmodul som använder mockar (ingen riktig databas) och täcker tom inmatning, SQL-nyckelord och specialtecken. Den verifierar också commit/close-beteende och att undantag hanteras tyst.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
AI-assisterad kodning för utvecklare

Promptning för säkerhet

☺ Vanlig promptning

$$

Skanna följande Python-funktion efter potentiella sårbarheter och föreslå säkrare alternativ om sådana finns.

🤓 Testdriven promptning

$$

Granska den här koden för vanliga webbsäkerhetsproblem, inklusive SQL-injektion, XSS och brister i indatavalidering.

AI-assisterad kodning för utvecklare

OWASP Top 10

owasp_top_10.png

AI-assisterad kodning för utvecklare

OWASP Top 10

  • Användarprompt: Granska följande funktion mot OWASP Top 10-sårbarheterna.
def login(username, password):
   query = f"SELECT * FROM users WHERE username = '{username}' \
           AND password = '{password}'"
   result = db.execute(query)
   return result.fetchone()
  • Modellsvar:

Här är en fokuserad OWASP Top 10-granskning av din inloggningsfunktion samt en säkrare omskrivning.

  1. A03: Injektion. Direkt stränginterpolation i SQL gör funktionen trivialt SQL-injicerbar. Exempelpayloads:
    • username = "admin' --" → kringgår lösenordskontroll. [...]
AI-assisterad kodning för utvecklare

Nu kör vi en övning!

AI-assisterad kodning för utvecklare

Preparing Video For Download...