Scrivere test e proteggere il codice con l'IA

Programmazione assistita dall'AI per sviluppatori

Francesca Donadoni

AI Curriculum Manager, DataCamp

Prompt guidato dai test

☺ Prompt Normale

Scrivi una funzione Python per analizzare indirizzi email.

🤓 Prompt Guidato dai Test

Scrivi una funzione Python per analizzare indirizzi email. Deve superare i seguenti test:

  • Accetta un indirizzo valido come "[email protected]".
  • Rifiuta input non validi come "user@@domain".
  • Genera un ValueError per input vuoti.
Programmazione assistita dall'AI per sviluppatori

Prompt guidato dai test

  • Richiesta utente: Genera test unitari in Python per una funzione che elabora dati di moduli inviati dagli utenti e li inserisce in un database SQL.

  • Risposta del modello:

Ecco una suite pytest pronta all'uso che copre validazione, normalizzazione, sicurezza da SQL injection e comportamento delle transazioni per una funzione che elabora dati di moduli e inserisce un record in un database SQL.

---------- Test DB fixtures ----------

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

Programmazione assistita dall'AI per sviluppatori

Prompt guidato dai test

  • Richiesta utente: Genera test unitari in Python usando pytest per la seguente funzione. Includi casi per input vuoti, parole chiave SQL nell'input e caratteri speciali. Assumi una connessione al database simulata. <INSERT FUNCTION>

  • Risposta del modello:

Ecco un modulo di test pytest autonomo che utilizza mock (nessun DB reale) e copre input vuoti, parole chiave SQL e caratteri speciali. Verifica anche il comportamento di commit/close e che le eccezioni siano gestite.

Programmazione assistita dall'AI per sviluppatori

Prompt per la sicurezza

☺ Prompt Normale

$$

Analizza la seguente funzione Python per potenziali vulnerabilità e suggerisci alternative più sicure se ne trovi.

🤓 Prompt Guidato dai Test

$$

Esamina questo codice per problemi comuni di sicurezza web, inclusi SQL injection, XSS e difetti di validazione dell'input.

Programmazione assistita dall'AI per sviluppatori

OWASP Top 10

owasp_top_10.png

Programmazione assistita dall'AI per sviluppatori

OWASP Top 10

  • Richiesta utente: Verifica la seguente funzione per le vulnerabilità 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()
  • Risposta del modello:

Ecco un audit OWASP Top 10 della tua funzione di login, con una riscrittura più sicura.

  1. A03: Injection. L'interpolazione diretta di stringhe in SQL rende il codice vulnerabile a SQL injection. Esempi di payload:
    • username = "admin' --" → aggira il controllo della password. [...]
Programmazione assistita dall'AI per sviluppatori

Ayo berlatih!

Programmazione assistita dall'AI per sviluppatori

Preparing Video For Download...