EN
Sécuriser son domaine

Votre domaine face à l'IA : llms.txt, crawlers, MCP

Ce que votre domaine dit aux IA et ce qu'il leur expose : llms.txt, règles pour les crawlers IA, découverte d'agents et serveurs MCP.

1 Introduction

Votre site n'est plus lu seulement par des humains et des moteurs de recherche. Les entreprises d'IA l'explorent pour entraîner leurs modèles et répondre aux questions, les assistants récupèrent vos pages quand un utilisateur pose une question sur vous, et les agents IA cherchent des outils qu'ils peuvent appeler. Quelques fichiers et endpoints décident de ce qu'ils peuvent lire, et de ce qu'ils peuvent faire.

La section AI & agents d'un scan de domaine les regroupe en quatre blocs : llms.txt (un guide que vous proposez aux modèles de langage), la politique d'exploration IA (ce que votre robots.txt autorise à chaque robot d'IA), les fichiers de découverte d'agents, et tout serveur MCP annoncé par votre domaine. L'essentiel relève du choix. Un point est un vrai problème de sécurité : un serveur MCP qui répond à n'importe qui, sans authentification.

15

Robots d'IA connus que le scan confronte à votre robots.txt

2024

Anthropic publie le Model Context Protocol (MCP)

Art. 4

Directive UE 2019/790 : l'opposition à la fouille de textes et de données doit être lisible par machine

2 Comment ça marche

Chaque bloc répond à une question. Le scan lit des fichiers publics en HTTPS et, seulement si votre domaine annonce un serveur MCP, lui parle avec le protocole lui-même.

1

Que dites-vous à l'IA ?

llms.txt et fichiers de découverte d'agents : ce que vous avez choisi de présenter aux modèles et aux agents, et s'ils laissent fuiter des URL internes.

2

Que peut lire l'IA ?

Les règles robots.txt par robot, Content-Signal, et la réserve européenne de fouille de textes et de données dans tdmrep.json.

3

Que peut faire l'IA ?

Les serveurs MCP : quels outils un agent peut appeler, si un jeton est exigé, et si ces outils modifient des données.

Politique ou sécurité

Bloquer ou autoriser les robots d'IA est une décision métier, pas une vulnérabilité : le scan la remonte en info, sans effet sur votre score. Deux choses sont différentes. Des URL internes annoncées dans llms.txt (medium), et un serveur MCP qui laisse n'importe qui appeler des outils qui modifient des données, ou qui porte des instructions cachées pour le modèle (high). Ce sont les constats à traiter en premier.

3 Analyse détaillée

llms.txt : un plan pour les modèles de langage

/llms.txt est un fichier markdown qui indique aux modèles de langage quelles pages de votre site comptent, avec un court résumé. C'est une proposition communautaire (llmstxt.org), pas un standard IETF ou W3C, et aucun acteur de l'IA n'est tenu de le lire. Un fichier compagnon, /llms-full.txt, contient parfois tout le contenu d'un bloc.

# Example SAS

> Logiciel de facturation pour les TPE.

## Documentation
- [Démarrer](https://example.fr/docs/demarrer): créer un compte
- [Référence API](https://example.fr/docs/api)

Pas de llms.txt, aucun souci

Son absence n'est pas une faiblesse et le scan ne la signale pas. N'en publiez un que si vous voulez orienter la façon dont les modèles présentent votre site.

Ce que le scan remonte

Titre, résumé, sections, nombre de liens (dont externes), et présence de llms-full.txt. Il lève un constat medium quand un lien pointe vers une URL d'administration ou interne : des chemins comme /admin, /wp-admin, /.env, /.git, phpmyadmin, grafana, jenkins, ou des hôtes comme staging. et internal.. Les fichiers générés automatiquement les ramassent facilement : retirez-les.

Politique d'exploration IA : robots.txt, Content-Signal et TDMRep

Les robots d'IA s'annoncent par un nom de user-agent et, chez les grands acteurs, respectent robots.txt. Ils font trois métiers : entraînement (GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot, Bytespider, meta-externalagent, Amazonbot), recherche IA (OAI-SearchBot, Claude-SearchBot, PerplexityBot) et récupération à la demande d'un utilisateur (ChatGPT-User, Claude-User, Perplexity-User, MistralAI-User). Vous pouvez les traiter différemment. Pour refuser l'entraînement tout en restant visible dans la recherche IA :

# Refuser l'entraînement des modèles
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: CCBot
Disallow: /

# Tous les autres, y compris recherche IA et requêtes utilisateur
User-agent: *
Disallow: /panier/

Comment le scan le lit

Pour chaque robot : Blocked (Disallow: / sans Allow: /), Partly (certains chemins interdits) ou Allowed, et s'il a sa propre règle ou relève de User-agent: *. Sans robots.txt, tous les robots sont autorisés par défaut.

Google-Extended et Applebot-Extended sont des jetons

Ils n'explorent rien eux-mêmes. Ils indiquent à Google et Apple si le contenu récupéré par leurs robots habituels peut servir à l'IA. Les bloquer ne vous retire pas de Google Search ni des fonctions de recherche d'Apple.

Content-Signal

Une ligne robots.txt plus récente, proposée par Cloudflare, qui dit à quoi le contenu peut servir : Content-Signal: search=yes, ai-input=yes, ai-train=no. Le scan affiche chaque signal en yes, no ou unset. Comme le reste de robots.txt, c'est une déclaration que les robots choisissent de respecter.

TDMRep : l'opt-out européen

Dans l'UE, la fouille de textes et de données (TDM) sur du contenu public est permise, sauf si le titulaire des droits s'y oppose « de manière appropriée », par des procédés lisibles par machine (directive 2019/790, article 4, transposé en France dans le Code de la propriété intellectuelle). Le TDM Reservation Protocol (une spécification de groupe communautaire W3C) le fait via /.well-known/tdmrep.json. Le scan indique si le fichier existe et s'il réserve les droits (tdm-reservation à 1).

[
  { "location": "/", "tdm-reservation": 1, "tdm-policy": "https://example.fr/tdm-policy.json" }
]

Fichiers de découverte d'agents

Les agents cherchent des descriptions lisibles par machine de ce que propose votre domaine. Le scan vérifie :

Carte d'agent A2A

/.well-known/agent-card.json (ou l'ancien agent.json) : un agent que vous exploitez, son endpoint, ses compétences et ses schémas de sécurité. Le rapport affiche « no security scheme declared » quand la carte n'en liste aucun : vérifiez que l'endpoint exige bien une authentification.

Cartes de serveur MCP et enregistrement TXT _mcp

/.well-known/mcp/server-card.json, /.well-known/mcp.json, /.well-known/mcp-server, ou un TXT _mcp dans le DNS. Ces conventions sont encore en train d'émerger. Une carte qui annonce un endpoint qui ne répond pas comme un serveur MCP est signalée en low : supprimez les cartes périmées.

Manifeste de plugin ChatGPT

/.well-known/ai-plugin.json appartient à une plateforme de plugins qu'OpenAI a arrêtée en 2024. S'il est encore là, il est signalé en low : supprimez-le, ainsi que la spécification d'API qu'il référence si rien d'autre ne s'en sert.

Serveurs MCP exposés

Le Model Context Protocol permet à un agent IA de se connecter à un serveur et d'appeler ses outils (des fonctions comme « chercher une commande » ou « créer un ticket »), de lire ses ressources et d'utiliser ses prompts. Un serveur MCP joignable depuis internet est une API pour agents, et mérite la même protection que n'importe quelle API.

Le scan ne se connecte que là où votre domaine annonce un serveur (une carte, un enregistrement _mcp, un lien dans llms.txt, ou un hôte nommé mcp.*), jamais en devinant des chemins. Il envoie initialize, liste les outils, ressources et prompts, et n'appelle jamais aucun outil.

Authentification exigée : le bon cas

Le serveur refuse de lister quoi que ce soit sans jeton. Le rapport montre alors ce qu'il publie pour en obtenir un : serveur d'autorisation, scopes, mode d'enregistrement des clients (enregistrement dynamique selon la RFC 7591, document de métadonnées client, ou clients préenregistrés uniquement). La spécification MCP s'appuie pour cela sur OAuth.

Ouvert, avec des outils qui modifient des données (high)

N'importe qui sur internet, humain ou agent, peut appeler des outils qui écrivent, envoient, suppriment ou déploient. Le scan classe les outils d'après leurs annotations et leurs noms (delete, create, send, exec, transfer...). Traitez-le comme une API d'administration sans authentification.

Empoisonnement d'outils, ou tool poisoning (high)

Le modèle lit les descriptions d'outils comme une partie de son contexte. Quand une description contient des instructions qui lui sont adressées, tout agent qui charge le serveur peut être manipulé. Vérifiez que personne n'a modifié vos descriptions et qu'elles viennent de votre code, pas de données saisies par des utilisateurs.

Ouvert en lecture seule (info), ou en HTTP simple (medium)

Un serveur public en lecture seule peut être voulu (recherche dans une documentation publique). Assurez-vous qu'il ne renvoie vraiment que des données publiques. Un serveur en http:// fait transiter jetons et réponses en clair : passez-le en HTTPS.

Ordre de correction pour un serveur ouvert : exigez une authentification (ou coupez-le) aujourd'hui, puis passez en revue chaque outil qui modifie des données, réduisez les droits des jetons au minimum et journalisez chaque appel. Les services exposés en général sont traités dans vulnérabilités exposées.

Vérifiez votre domaine sur mlab.sh

Un scan de domaine lit votre llms.txt, vos règles pour les robots d'IA et votre fichier TDMRep, vos fichiers de découverte d'agents, et inspecte tout serveur MCP annoncé sans appeler un seul outil.

Scanner votre domaine sur mlab.sh

4 Red Flags

Un serveur MCP ouvert à tous, avec des outils qui écrivent ou suppriment

Le constat le plus urgent de cette section. Exigez une authentification ou coupez le serveur avant toute autre chose.

Des descriptions d'outils qui s'adressent au modèle

« Ignore previous instructions », une fausse balise <system>, « ne le dis pas à l'utilisateur », l'ordre de lire ~/.ssh ou .env, ou des caractères Unicode invisibles : le scan signale tout cela comme du tool poisoning. Cherchez comment c'est arrivé là.

Des liens admin, préprod ou internes dans llms.txt

Vous remettez à chaque modèle une liste de points d'entrée internes. Régénérez le fichier à partir des seules pages publiques.

Une carte d'agent sans schéma de sécurité

Soit l'endpoint de l'agent est ouvert, soit la carte est incomplète. Vérifiez lequel, et déclarez l'authentification utilisée.

Une politique d'exploration que personne n'a choisie

Ce n'est pas une vulnérabilité, mais si le scan montre tous les robots d'IA autorisés (ou bloqués) sans que personne l'ait décidé, tranchez avec vos équipes juridique et marketing, puis écrivez-le dans robots.txt.

Modules connexes