Rédiger des tests et sécuriser le code avec l'IA

Programmation assistée par l'IA pour développeurs et développeuses

Francesca Donadoni

AI Curriculum Manager, DataCamp

Invite pilotée par les tests

☺ Invite normale

Écrivez une fonction Python qui analyse des adresses de courriel.

🤓 Invite pilotée par les tests

Écrivez une fonction Python qui analyse des adresses de courriel. Elle doit réussir les tests suivants :

  • Accepte une adresse valide comme "[email protected]".
  • Refuse une entrée invalide comme "user@@domain".
  • Lève une ValueError pour une entrée vide.
Programmation assistée par l'IA pour développeurs et développeuses

Invite pilotée par les tests

  • Invite utilisateur : Générez des tests unitaires en Python pour une fonction qui traite des données de formulaire soumises par l'utilisateur et les insère dans une base de données SQL.

  • Réponse du modèle :

Voici une suite pytest prête à exécuter qui couvre la validation, la normalisation, la protection contre l'injection SQL et le comportement des transactions pour une fonction qui traite des données de formulaire et insère un enregistrement dans une base de données SQL.

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

@pytest.fixture()
def conn():
    """In-memory SQLite DB with a users table."""
    c = sqlite3.connect(":memory:") [...]
Programmation assistée par l'IA pour développeurs et développeuses

Invite pilotée par les tests

  • Invite utilisateur : Générez des tests unitaires Python avec pytest pour la fonction suivante. Incluez des cas pour l'entrée vide, des mots-clés SQL dans l'entrée et des caractères spéciaux. Supposez une connexion de base de données simulée. <INSERT FUNCTION>

  • Réponse du modèle :

Voici un module de tests pytest autonome qui utilise des objets simulés (aucune BD réelle) et couvre l'entrée vide, les mots-clés SQL et les caractères spéciaux. Il vérifie aussi les appels commit/close et l'absorption des exceptions.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
Programmation assistée par l'IA pour développeurs et développeuses

Invites axées sur la sécurité

☺ Invite normale

$$

Analysez la fonction Python suivante pour repérer d'éventuelles vulnérabilités et proposez des solutions plus sûres s'il y a lieu.

🤓 Invite pilotée par les tests

$$

Examinez ce code pour les problèmes de sécurité Web courants, dont l'injection SQL, les XSS et les lacunes de validation des entrées.

Programmation assistée par l'IA pour développeurs et développeuses

OWASP Top 10

OWASP Top 10

Programmation assistée par l'IA pour développeurs et développeuses

OWASP Top 10

  • Invite utilisateur : Vérifiez la fonction suivante selon les vulnérabilités de l'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éponse du modèle :

Voici un audit ciblé OWASP Top 10 de votre fonction de connexion, ainsi qu'une réécriture plus sûre.

  1. A03 : Injection. L'interpolation directe de chaînes dans le SQL rend l'injection triviale. Exemples de charges utiles :
    • username = "admin' --" → contourne la vérification du mot de passe. [...]
Programmation assistée par l'IA pour développeurs et développeuses

Passons à la pratique !

Programmation assistée par l'IA pour développeurs et développeuses

Preparing Video For Download...