Prompt gratuit · Édition octobre 2026

Le prompt qui audite
la sécurité de votre app.

Vous avez construit votre site ou votre app avec l’IA ? Copiez ce prompt dans votre agent de code : il vérifie la sécurité, vous explique chaque problème en français simple, corrige avec votre accord et vous laisse un rapport.

Télécharger le skill

01 · L’essentiel

En 2 minutes

Pour qui ? Toute personne qui a un site ou une app en ligne, construit avec l’IA (Lovable, Bolt, Cursor, Claude Code, Codex…), sans être expert en sécurité.

Ce qu’il vous faut : un agent IA qui a accès aux fichiers de votre projet. Par exemple Claude Code, Codex, Cursor, Windsurf ou Hermes Agent. Un simple chat (ChatGPT ou Claude dans le navigateur) ne voit pas votre code : il ne pourra rien vérifier.

Comment : ouvrez votre agent dans le dossier du projet, collez le prompt, répondez à ses questions. Comptez 20 à 45 minutes selon la taille du projet.

Il vous parle simplementChaque terme est expliqué, chaque problème a un niveau d’urgence.
Il demande avant d’agirUne question à la fois, avec sa recommandation. Rien n’est mis en ligne sans votre accord.
Il ne montre jamais vos secretsIl dit où se trouve une clé exposée, jamais sa valeur.
Il connaît votre hébergeurNetlify, Vercel, Cloudflare, OVH, Docker, Coolify, Supabase, Firebase…

02 · À copier-coller

Le prompt

Copiez tout le bloc ci-dessous et collez-le dans votre agent, ouvert dans le dossier de votre projet.

# Audit de sécurité guidé

Tu vas m'accompagner dans un audit de sécurité de mon projet web, puis corriger et rédiger un rapport. Je ne suis pas développeur expert : j'ai construit ce projet avec l'aide de l'IA et je ne comprends pas tous les termes techniques. Tu avances par étapes et tu me poses des questions au fur et à mesure.

## Comment me parler

- Français simple. Chaque terme technique est expliqué en une phrase la première fois, avec une image si ça aide (ex. « la CSP, c'est la liste des invités autorisés à charger quelque chose sur ta page »).
- Pour chaque problème : ce que c'est, le risque concret (ce qu'un attaquant pourrait vraiment faire) et l'urgence :
  - 🔴 à corriger maintenant (vol de données ou prise de contrôle possible)
  - 🟠 important (protection classique manquante)
  - 🟢 confort (bonne pratique, peu de risque)
- Une seule question à la fois, au moment où tu en as besoin, avec ta recommandation et 2 à 4 options simples. Utilise l'outil de questions à choix si tu l'as.
- Tout ce que tu peux vérifier toi-même (code, fichiers de config, réponses du site en ligne), vérifie-le au lieu de me le demander. Ne me demande que des décisions, des intentions ou des accès.
- Ne m'affiche jamais un secret (clé, mot de passe, jeton) : dis seulement où il se trouve.

## Règles de sécurité de ta part

- Tu modifies d'abord les fichiers du projet (dans le dépôt). Pour tout réglage dans un tableau de bord en ligne (Netlify, Vercel, Cloudflare, Supabase, OVH, Coolify…), tu m'expliques où cliquer et ce que ça change, et tu me demandes avant d'agir toi-même si tu en as l'accès.
- Rien n'est poussé ni mis en ligne sans mon accord explicite.
- Si tu trouves un secret exposé, la seule vraie correction est de le remplacer (« rotation ») chez le fournisseur : supprimer le fichier ne suffit pas, la clé reste dans l'historique et a pu être copiée. Explique-moi comment faire, pas à pas.

## ÉTAPE 0 — Découverte (sans rien modifier)

Détecte toi-même :
- la technologie (React/Vite, Next.js, Nuxt, Astro, site statique, Node/Express, PHP, WordPress…) ;
- l'hébergement, d'après les fichiers présents : Netlify (`netlify.toml`, `_headers`, `_redirects`), Vercel (`vercel.json`), Cloudflare (`wrangler.toml`, `_headers`, `functions/`), Docker/Coolify/VPS (`Dockerfile`, `docker-compose`, `nginx.conf`), OVH mutualisé/Apache (`.htaccess`), Firebase (`firebase.json`), Supabase (`supabase/`, variables `SUPABASE_*`), Stripe (clés, webhooks) ;
- l'adresse publique du site (README, config ; sinon demande-la-moi).

Puis résume-moi le projet en 5 lignes (« ton site est un X, hébergé sur Y, avec une base Z ») et demande-moi si c'est juste.
→ Question : le site doit-il apparaître sur Google (public) ou rester privé ?

## ÉTAPE 1 — Audit (lecture seule)

Vérifie, selon ce qui existe :
1. **Secrets** : fichiers `.env` ou clés commités dans Git (historique compris) ; clés secrètes présentes dans le code qui part dans le navigateur (les variables `VITE_*`, `NEXT_PUBLIC_*`, `PUBLIC_*` sont visibles par tout le monde : rien de secret ne doit y être).
2. **Supabase** (si présent) : la clé `service_role` ne doit jamais être côté navigateur ; RLS (« Row Level Security ») activé sur toutes les tables, avec des règles qui n'autorisent pas tout le monde à tout lire ou écrire ; buckets Storage publics voulus ou non ; URLs de redirection et confirmation d'e-mail de l'Auth ; CORS des Edge Functions. Si j'ai un accès Supabase (CLI ou MCP), vérifie directement ; sinon déduis-le des migrations du dépôt et dis-moi ce que tu n'as pas pu vérifier.
3. **Firebase** (si présent) : règles Firestore/Storage qui ouvrent tout (`allow read, write: if true`).
4. **En-têtes de sécurité HTTP** du site en ligne (relève-les toi-même) : Content-Security-Policy, Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options ou frame-ancestors, Referrer-Policy, Permissions-Policy ; version du serveur exposée ; redirection HTTP → HTTPS ; cookies (`Secure`, `HttpOnly`, `SameSite`).
5. **CORS** : l'API accepte-t-elle les requêtes de n'importe quel site ?
6. **Indexation**, selon ma réponse à l'étape 0.
7. **Dépendances** : vulnérabilités connues sévères (`npm audit` ou équivalent) ; installations non figées (pas de lockfile dans le Dockerfile ou la CI).
8. **Pages d'administration** accessibles sans mot de passe.

Pour la CSP, fais d'abord l'inventaire de tout ce que charge le site (polices, analytics, Stripe, Sentry, vidéos, cartes, CDN, Supabase, WebSocket, scripts inline) : c'est cette liste qui fixe ce qu'on autorise.

→ Montre-moi un tableau : Problème | En clair | Risque (🔴🟠🟢) | Correction proposée | Où.
→ Pour chaque service tiers trouvé, demande-moi si on le garde.
→ Question : on corrige tout, les 🔴 d'abord, ou une sélection ?

## ÉTAPE 2 — Corrections

Mets les en-têtes au bon endroit selon l'hébergeur :
- **Netlify** : fichier `_headers` ou `[[headers]]` dans `netlify.toml`
- **Vercel** : `headers` dans `vercel.json`
- **Cloudflare Pages** : fichier `_headers` ; Workers : en-têtes dans le code ; règles du tableau de bord seulement en dernier recours, avec mon accord
- **OVH mutualisé / Apache** : `.htaccess` avec `mod_headers`
- **VPS / Docker / Coolify avec nginx** : un fichier commun inclus dans chaque `location` (piège : un `location` qui pose son propre `add_header` n'hérite plus de ceux du serveur ; toujours avec `always`)
- **Next.js** : `headers()` dans `next.config` ; **Express** : un middleware

CSP : la plus stricte que permet l'inventaire. Si le framework impose des scripts inline, explique-moi le compromis avant de mettre `'unsafe-inline'`.
Les corrections Supabase (RLS, policies) passent par une migration SQL que tu me montres en expliquant chaque règle en une phrase, avant de l'appliquer.
→ Si une correction risque de casser une fonctionnalité, arrête-toi et demande-moi.

## ÉTAPE 3 — Vérification avant mise en ligne

Lance le site en local ou en préversion (preview Netlify/Vercel/Cloudflare si possible). Vérifie les en-têtes, puis parcours les pages clés dans un navigateur : la console ne doit afficher aucune erreur « Content Security Policy ». Teste ce qui peut casser : paiement, connexion, formulaires, vidéos, cartes. Demande-moi quelles pages sont importantes si tu ne sais pas.
→ Résume-moi ce qui a changé (en clair, pas en diff brut) et demande : on met en ligne ?

## ÉTAPE 4 — Mise en ligne (après mon accord seulement)

Pousse ou déploie selon l'hébergeur, attends la fin, revérifie le site en ligne (en-têtes + navigateur + console). En cas de problème, propose-moi d'abord le retour arrière.

## ÉTAPE 5 — Rapport

Écris `docs/audit-securite-AAAA-MM-JJ.md`, lisible par un non-développeur :
- résumé en 3 lignes et score avant / après (sur 10, expliqué) ;
- tableau des problèmes (avant / après, en clair) ;
- ce que je dois encore faire moi-même (rotation d'une clé, réglage d'un tableau de bord…), en checklist ;
- ce qui n'a pas pu être vérifié, et pourquoi ;
- petit glossaire des termes utilisés.

→ Question : je le garde dans le projet ou tu me le donnes seulement ?
→ Puis demande-moi si on audite un autre projet.

Commence par l'étape 0.

03 · Pas à pas

Ce que fait chaque étape

  1. 0
    Découverte

    L’agent lit votre projet sans rien toucher : quelle technologie, quel hébergeur, quelle base de données, quelle adresse en ligne. Il vous résume tout en 5 lignes et vous demande si c’est juste, puis si le site doit apparaître sur Google ou rester privé.

  2. 1
    Audit (lecture seule)

    Il passe en revue ce qui fait vraiment mal : clés secrètes publiées par erreur, base Supabase ou Firebase ouverte à tous, en-têtes de sécurité absents, API qui répond à n’importe quel site, pages d’admin sans mot de passe, dépendances vulnérables. Vous recevez un tableau avec, pour chaque problème, une explication en clair et un niveau d’urgence 🔴 🟠 🟢.

  3. 2
    Corrections

    Vous choisissez quoi corriger. L’agent modifie les fichiers du projet, au bon endroit selon votre hébergeur. Il s’arrête et vous demande avant toute correction qui pourrait casser quelque chose (un paiement, une vidéo, un widget).

  4. 3
    Vérification

    Avant toute mise en ligne, il lance le site, vérifie les en-têtes et parcourt les pages importantes dans un navigateur pour s’assurer que rien n’est bloqué. Il vous résume les changements en clair.

  5. 4
    Mise en ligne

    Uniquement avec votre accord. Il déploie, attend la fin, revérifie le site en ligne et vous propose un retour arrière si quelque chose cloche.

  6. 5
    Rapport

    Un fichier lisible par un non-développeur : score avant/après, problèmes corrigés, ce qu’il vous reste à faire vous-même (par exemple changer une clé chez un fournisseur), et un petit glossaire.

Les niveaux d’urgence : 🔴 quelqu’un peut voler des données ou prendre le contrôle, à corriger maintenant · 🟠 une protection classique manque · 🟢 bonne pratique, peu de risque.

04 · Selon votre hébergeur

Où vont les corrections

Vous n’avez rien à retenir : l’agent détecte votre hébergeur et place les corrections au bon endroit. Ce tableau sert à comprendre ce qu’il fait.

Netlify
Fichier _headers à la racine du site publié, ou section [[headers]] de netlify.toml.
Vercel
Section headers de vercel.json (ou headers() dans next.config pour Next.js).
Cloudflare Pages
Fichier _headers, comme Netlify. Pour un Worker : les en-têtes se posent dans le code.
OVH mutualisé, Apache
Fichier .htaccess avec des lignes Header always set … (module mod_headers).
VPS, Docker, Coolify (nginx)
Un fichier d’en-têtes commun, inclus dans chaque bloc location de la config nginx.
Node, Express
Un petit middleware qui pose les en-têtes sur toutes les réponses.
Supabase
Rien à voir avec les en-têtes : ici on vérifie la RLS, les règles d’accès, les buckets et la clé service_role.
Firebase
Les règles Firestore et Storage : aucune ne doit autoriser tout le monde à tout lire ou écrire.

05 · Glossaire

Le jargon expliqué

En-têtes HTTP
Des consignes invisibles que votre serveur envoie au navigateur avec chaque page. Certaines servent à la sécurité : elles disent au navigateur ce qu’il a le droit de faire.
CSP (Content-Security-Policy)
La liste des invités autorisés à charger quelque chose sur votre page (scripts, polices, images, vidéos). Si un pirate arrive à injecter un script, le navigateur refuse de l’exécuter, car il n’est pas sur la liste.
HSTS
Oblige le navigateur à toujours utiliser le cadenas (HTTPS) sur votre site, même si quelqu’un tape l’adresse sans « https ». Empêche qu’on intercepte la connexion sur un Wi-Fi public.
X-Frame-Options / frame-ancestors
Interdit qu’un autre site affiche le vôtre dans un cadre invisible pour vous faire cliquer à votre insu (le « clickjacking »).
nosniff
Empêche le navigateur de « deviner » le type d’un fichier : un fichier texte piégé ne peut pas être exécuté comme un script.
Referrer-Policy
Contrôle ce que votre site révèle aux autres sites quand un visiteur clique sur un lien sortant (l’adresse exacte de la page d’où il vient).
Permissions-Policy
Coupe l’accès à la caméra, au micro, à la position… pour les fonctions que votre site n’utilise pas. Ce qui n’existe pas ne peut pas être détourné.
CORS
La règle qui dit quels autres sites peuvent interroger votre API depuis le navigateur d’un visiteur. « Ouvert à tous » veut dire qu’un site malveillant peut s’en servir à la place de votre visiteur.
Secret, clé d’API
Un mot de passe pour une machine. Il ne doit jamais se retrouver dans le code envoyé au navigateur ni dans Git : tout le monde pourrait le lire et l’utiliser à vos frais.
Variables publiques (VITE_, NEXT_PUBLIC_, PUBLIC_)
Les variables qui portent ces préfixes sont copiées dans le code envoyé au navigateur, donc visibles par n’importe qui. Rien de secret ne doit y être.
Rotation d’une clé
Remplacer une clé exposée par une nouvelle chez le fournisseur, puis désactiver l’ancienne. Supprimer le fichier ne suffit pas : la clé reste dans l’historique Git et a pu être copiée.
RLS (Row Level Security)
Sur Supabase, le videur de votre base de données : il décide, ligne par ligne, qui a le droit de lire ou modifier quoi. Sans RLS, la clé publique de votre app suffit pour lire toute la table.
Clé service_role
La clé « passe-partout » de Supabase, qui ignore la RLS. Elle ne doit vivre que sur un serveur, jamais dans une app ou un site.
Lockfile
Le fichier (package-lock.json, pnpm-lock.yaml…) qui fige la version exacte de chaque dépendance. Sans lui, une nouvelle version d’un outil peut casser votre site au prochain déploiement.
noindex, robots.txt
Les consignes qui demandent aux moteurs de recherche et aux robots d’IA de ne pas indexer une page. Utile pour une app privée ou un back-office.
Skill
Un fichier SKILL.md qui apprend une procédure à un agent IA. Une fois installé, vous lancez l’audit en une commande, sans recoller le prompt. Le format est un standard ouvert (agentskills.io).
Routine
Une tâche que l’agent lance tout seul à heure fixe (par exemple chaque lundi à 8 h), sans que vous soyez là.

06 · Réutilisable

En faire un skill

Un skill, c’est le prompt rangé dans un fichier SKILL.md que votre agent connaît. Vous l’installez une fois, puis vous lancez l’audit en une commande dans n’importe quel projet. Le format est un standard ouvert (agentskills.io) : le même fichier marche dans plusieurs agents.

Claude Code

Collez dans votre terminal, puis tapez /audit-securite dans Claude Code, depuis le dossier du projet.

mkdir -p ~/.claude/skills/audit-securite && curl -fsSL https://coffee-beans.fr/ressources/audit-securite-ia/SKILL.md -o ~/.claude/skills/audit-securite/SKILL.md

Codex (OpenAI)

Même fichier, dans le dossier des skills de Codex. Lancez-le en écrivant $audit-securite, ou simplement « lance l’audit de sécurité ».

mkdir -p ~/.codex/skills/audit-securite && curl -fsSL https://coffee-beans.fr/ressources/audit-securite-ia/SKILL.md -o ~/.codex/skills/audit-securite/SKILL.md

Hermes Agent (Nous Research)

Même principe dans le dossier des skills de Hermes. Demandez-lui ensuite « lance le skill audit-securite sur ~/chemin/de/mon-projet ».

mkdir -p ~/.hermes/skills/audit-securite && curl -fsSL https://coffee-beans.fr/ressources/audit-securite-ia/SKILL.md -o ~/.hermes/skills/audit-securite/SKILL.md

Cursor, Windsurf et les autres

Si votre agent lit les fichiers SKILL.md, placez-le dans son dossier de skills. Sinon, gardez le prompt de la section 02 sous la main : le coller dans le chat de l’agent revient au même.

07 · Automatique

En faire une routine

Une routine relance l’audit toute seule, par exemple chaque lundi matin, et vous prévient seulement s’il y a du nouveau. Comme personne n’est là pour répondre, elle utilise une version à part du prompt : lecture seule, aucune question, aucune modification, juste un rapport et une alerte « ⚠️ ACTION REQUISE » en cas de nouveau problème 🔴. Pour corriger, vous relancez ensuite l’audit guidé vous-même.

Audit de sécurité automatique, en lecture seule, de ce projet web. Personne ne répond pendant l'exécution : ne pose aucune question.

Règles strictes
- Tu ne modifies rien : ni code, ni configuration, ni tableau de bord, ni base de données. Tu ne pousses rien et ne déploies rien.
- Tu n'affiches jamais un secret (clé, mot de passe, jeton) : seulement l'endroit où il se trouve.
- Langage simple : chaque problème est expliqué en une phrase pour un non-développeur, avec son niveau de risque 🔴 (vol de données ou prise de contrôle possible), 🟠 (protection classique manquante) ou 🟢 (bonne pratique).

À vérifier
1. Secrets commités dans Git (historique compris) ou présents dans le code envoyé au navigateur (variables VITE_*, NEXT_PUBLIC_*, PUBLIC_*).
2. Supabase si présent : clé service_role côté navigateur, tables sans RLS ou avec des règles ouvertes à tous, buckets publics. Firebase si présent : règles qui ouvrent tout.
3. En-têtes de sécurité du site en ligne : Content-Security-Policy, Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options ou frame-ancestors, Referrer-Policy, Permissions-Policy ; version du serveur exposée ; redirection HTTP vers HTTPS ; cookies (Secure, HttpOnly, SameSite).
4. CORS ouvert à tous les sites, pages d'administration accessibles sans mot de passe, indexation non voulue.
5. Dépendances avec des vulnérabilités sévères connues ; installations non figées (pas de lockfile dans le Dockerfile ou la CI).

Rapport
- Écris docs/audit-securite-AAAA-MM-JJ.md : résumé en 3 lignes, score sur 10, tableau Problème | En clair | Risque | Correction proposée | Où, et ce qui n'a pas pu être vérifié.
- Compare avec le rapport précédent du dossier docs/ s'il existe : liste en tête ce qui est nouveau, ce qui est corrigé, ce qui reste.
- Ton message final tient en 5 lignes : le score, les nouveaux 🔴 (ou « rien de nouveau »), et le lien vers le rapport. S'il y a un nouveau 🔴, commence le message par « ⚠️ ACTION REQUISE ».
- Pour corriger, je lancerai moi-même l'audit guidé (skill audit-securite) : ne fais aucune correction ici.

Routine Claude Code

Dans Claude Code, tapez /schedule et décrivez la tâche, par exemple « chaque lundi à 8 h ». Choisissez le dépôt GitHub du projet, puis collez le prompt de routine. Vous pouvez aussi la créer depuis claude.ai/code. Les routines tournent dans le cloud d’Anthropic, même ordinateur éteint (offres Pro, Max, Team et Enterprise).

Tâche planifiée Codex

Dans l’app Codex, demandez dans une conversation : « Crée une tâche planifiée chaque lundi à 8 h sur ce projet, avec ce prompt : » puis collez le prompt de routine. Les résultats arrivent dans l’app.

Routine Hermes Agent

Hermes comprend les horaires en langage naturel et peut joindre un skill à une tâche. Écrivez-lui, par exemple depuis Telegram :

Tous les lundis à 8h, audite la sécurité de ~/chemin/de/mon-projet en lecture seule, avec ces consignes : (collez ici le prompt de routine). Envoie-moi le résumé ici.

Vérifiez ensuite la tâche avec hermes cron list.

08 · Honnêtement

Les limites

  • C’est un excellent premier filet de sécurité, pas un test d’intrusion professionnel. Une app qui manipule des paiements ou des données sensibles mérite un vrai audit.
  • L’agent peut se tromper. Relisez ses propositions, surtout les règles de base de données, et testez avant de mettre en ligne. Le prompt l’y oblige, mais restez attentif.
  • Certaines corrections ne se font pas dans le code : changer une clé exposée, régler un tableau de bord. Le rapport vous les liste en checklist.
  • Les en-têtes ne remplacent pas un mot de passe : une page d’admin ouverte reste ouverte.

Besoin d’un regard humain ?

Coffee Beans passe votre application au crible et corrige les points bloquants avant un audit officiel ou une levée de fonds.

Demander un pré-audit