0Pricing
MCP Academy · Leçon

Tout valider et tout assainir

Considérez les entrées fournies par le modèle comme non fiables.

Tout valider et tout assainir est une leçon MCP Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage MCP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours MCP Academy comprend 4 leçons au total.

Les entrées ne sont pas fiables

Chaque argument que le modèle transmet à un outil est une entrée non fiable. Le modèle peut être honnête, mais ses arguments peuvent être façonnés par du texte injecté : vérifiez-les. 🔎

Valider avant d’agir

Vérifiez la forme, le type et l’intervalle avant qu’un outil n’effectue une action réelle. La validation à l’entrée transforme un appel incorrect et vague en un rejet clair et sûr.

Laisser Pydantic vous aider

Les indications de type et les modèles Pydantic rejettent les arguments mal formés avant l’exécution de votre code. Cette entrée doit être un entier positif : une chaîne ou une valeur négative est refusée immédiatement.

from pydantic import Field

@mcp.tool()
def get_page(n: int = Field(gt=0, le=100)) -> str:
    return load(n)

Délimiter les valeurs

Limitez les tailles, les longueurs et les quantités. Un champ de limite dans une requête empêche le modèle de demander un million de lignes et de transformer un seul appel en déni de service.

Assainir selon la destination

Assainir une entrée signifie la rendre sûre pour l’endroit où elle sera utilisée. Une valeur sûre dans un journal peut être dangereuse dans un interpréteur de commandes, une chaîne SQL ou un chemin de fichier.

Ne jamais construire du SQL manuellement

La concaténation de chaînes SQL favorise les injections. Utilisez des requêtes paramétrées afin que la base de données traite strictement l’entrée du modèle comme une valeur, jamais comme du code exécutable.

cur.execute(
    "SELECT * FROM orders WHERE id = ?",
    (order_id,),
)

Protéger l’interpréteur de commandes

Si un outil exécute une commande, ne collez jamais les arguments dans une chaîne destinée à l’interpréteur. Transmettez une liste d’arguments et évitez l’analyse par l’interpréteur afin que l’entrée ne puisse pas dissimuler des commandes supplémentaires.

Résoudre et confiner les chemins

Pour les outils de fichiers, résolvez le chemin sous sa forme canonique et vérifiez qu’il reste dans la racine autorisée. Rejetez tout parcours de chemin utilisant par exemple deux points successifs.

p = (ROOT / name).resolve()
if not p.is_relative_to(ROOT):
    raise ValueError("path escapes root")

Échouer en refusant

Lorsque l’entrée ne passe pas une vérification, arrêtez-vous et renvoyez une erreur claire. Échouer en refusant vaut mieux que deviner, car une mauvaise supposition peut être exactement ce que souhaite un attaquant.

Ne faites pas non plus confiance à la sortie des outils

Les données renvoyées par votre outil peuvent transmettre des instructions injectées. Lorsque c’est important, étiquetez ou échappez le contenu récupéré afin que le modèle le traite comme des données et non comme des ordres.

Valider à chaque limite

Vérifiez l’entrée lorsqu’elle arrive dans votre outil, puis de nouveau avant qu’elle n’atteigne une base de données, un fichier ou une API. Chaque limite est une nouvelle occasion de détecter un élément dangereux.

Vérification rapide

Quel choix protège le mieux une requête SQL contre l’injection ?

Récapitulatif

Traitez toutes les entrées des outils comme non fiables : validez les types et les intervalles, assainissez selon la destination, confinez les chemins et échouez en refusant. Méfiez-vous des entrées. ✅

Questions Fréquemment Posées

La leçon « Tout valider et tout assainir » est-elle gratuite ?

Oui — le texte complet de « Tout valider et tout assainir » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours MCP Academy, passe à CoddyKit PRO. Le cours MCP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Tout valider et tout assainir » ?

Considérez les entrées fournies par le modèle comme non fiables. Tu pratiques MCP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer MCP Academy ?

Aucune expérience préalable n'est requise. MCP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Tout valider et tout assainir » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon MCP Academy ?

Oui. Chaque leçon MCP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Menaces propres à MCP
  2. Accès aux outils avec privilèges minimaux
  3. Tout valider et tout assainir
  4. Protéger les actions destructrices
← Retour à MCP Academy