0Pricing
MCP Academy · Lezione

Convalidare e sanificare tutto

Tratti gli input forniti dal modello come non attendibili.

Convalidare e sanificare tutto è una lezione MCP Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento MCP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso MCP Academy include 4 lezioni in totale.

Gli input non sono attendibili

Ogni argomento che il modello passa a uno strumento è un input non attendibile. Il modello potrebbe essere onesto, ma i suoi argomenti possono essere condizionati da testo iniettato: li verifichi. 🔎

Convalidare prima di agire

Controlli forma, tipo e intervallo prima che uno strumento esegua qualsiasi azione reale. La convalida all'ingresso trasforma una chiamata errata e vaga in un rifiuto chiaro e sicuro.

Lasciare che Pydantic aiuti

I suggerimenti di tipo e i modelli Pydantic rifiutano gli argomenti non validi prima dell'esecuzione del codice. Questo input deve essere un int positivo, quindi una stringa o un valore negativo viene rifiutato subito.

from pydantic import Field

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

Limitare i valori

Limiti dimensioni, lunghezze e quantità. Un campo limit in una query impedisce al modello di richiedere un milione di righe e trasformare una chiamata in una negazione del servizio.

Sanificare in base alla destinazione

Sanificare significa rendere l'input sicuro per il contesto in cui verrà inserito. Un valore sicuro in un log può essere pericoloso in una shell, in una stringa SQL o in un percorso di file.

Non costruire mai SQL manualmente

L'SQL concatenato con stringhe favorisce l'injection. Utilizzi query parametrizzate, così il database tratterà l'input del modello esclusivamente come un valore, mai come codice eseguibile.

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

Proteggere la shell

Se uno strumento esegue un comando, non inserisca mai gli argomenti in una stringa della shell. Passi un elenco di argomenti ed eviti il parsing della shell, così l'input non potrà nascondere comandi aggiuntivi.

Risoluzione e confinamento dei percorsi

Per gli strumenti che gestiscono file, risolva il percorso nella sua forma canonica e verifichi che rimanga all'interno della radice consentita. Rifiuti qualsiasi path traversal, ad esempio con due punti.

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

Chiudere in caso di errore

Quando l'input non supera un controllo, interrompa l'operazione e restituisca un errore chiaro. Il fail closed è preferibile alle supposizioni, perché una supposizione errata potrebbe essere proprio ciò che l'attaccante desidera.

Non si fidi neppure dell'output dello strumento

I dati restituiti dallo strumento possono trasportare istruzioni iniettate. Quando è importante, etichetti o faccia l'escape dei contenuti recuperati, così il modello li tratterà come dati, non come ordini.

Convalidare a ogni confine

Controlli l'input quando entra nello strumento e di nuovo prima che raggiunga un database, un file o un'API. Ogni confine è una nuova occasione per individuare qualcosa di non sicuro.

Verifica rapida

Quale scelta protegge meglio una query SQL dall'injection?

Riepilogo

Consideri tutti gli input degli strumenti non attendibili: convalidi tipi e intervalli, sanifichi in base alla destinazione, confini i percorsi e chiuda in caso di errore. Non si fidi dell'input. ✅

Domande Frequenti

La lezione «Convalidare e sanificare tutto» è gratuita?

Sì — il testo completo di «Convalidare e sanificare tutto» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso MCP Academy, passa a CoddyKit PRO. Il corso MCP Academy include 4 lezioni in totale.

Cosa imparerò in «Convalidare e sanificare tutto»?

Tratti gli input forniti dal modello come non attendibili. Eserciti MCP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare MCP Academy?

Non è richiesta alcuna esperienza precedente. MCP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Convalidare e sanificare tutto»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione MCP Academy?

Sì. Ogni lezione MCP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Minacce specifiche di MCP
  2. Accesso agli strumenti con privilegi minimi
  3. Convalidare e sanificare tutto
  4. Proteggere le azioni distruttive
← Torna a MCP Academy