Données sensibles
Refusez les requêtes qui contiennent des données qui ne devraient jamais arriver jusqu'à vous.
Cette règle repère les données sensibles dans le corps d'une requête ou dans un texte que vous lui donnez : numéros de carte bancaire, IBAN, clés API, jetons JWT, clés privées… Elle évite par exemple qu'un utilisateur colle sa carte bancaire dans un champ de commentaire, ou qu'un secret parte vers un modèle d'IA.
Le problème
Des données qui ne devraient jamais passer par votre application finissent pourtant dans vos requêtes : un client qui colle sa carte bancaire dans un champ de commentaire, un utilisateur qui envoie une clé API dans un ticket de support, un secret transmis à un modèle d'IA. Une fois enregistrées dans votre base, vos logs ou chez un prestataire, ces données deviennent une fuite à gérer.
Ce qu'elle arrête
- les cartes bancaires et les IBAN ;
- les clés API (dont Wave, Flutterwave et Paystack), les jetons JWT et les clés privées ;
- les secrets envoyés à un modèle d'IA.
Quand l'utiliser
Champs de texte libre (commentaires, support, messagerie), API qui reçoivent du contenu de vos utilisateurs, messages envoyés à une IA.
Et dans vos réponses ?
Cette règle analyse ce qui entre dans votre application. Pour masquer les données sensibles qui sortiraient par erreur dans vos réponses, utilisez l'option responseGuard : voir Options du SDK.
Configuration
import express from "express";
import { zarex, sensitiveInfo } from "@zarex/express";
const app = express();
app.use(express.json());
app.use(
zarex({
key: process.env.ZAREX_KEY!,
inspectBody: true, // nécessaire pour analyser le corps
rules: [sensitiveInfo()],
})
);Sans option, les secrets sont refusés : CREDIT_CARD, SSN, API_KEY, JWT, PRIVATE_KEY et IBAN.
Types détectés
| Type | Donnée |
|---|---|
CREDIT_CARD | Numéro de carte bancaire. |
IBAN | Numéro de compte bancaire international. |
API_KEY | Clé API, y compris Wave, Flutterwave et Paystack. |
JWT | Jeton JWT. |
PRIVATE_KEY | Clé privée. |
SSN | Numéro de sécurité sociale. |
EMAIL | Adresse e-mail. |
PHONE | Numéro de téléphone. |
PASSWORD | Mot de passe. |
HIGH_ENTROPY | Valeur aléatoire placée après un mot comme secret, token ou api_key, dont le format est inconnu. |
EMAIL, PHONE et PASSWORD sur demande
Ces trois types ne sont refusés que si vous les ajoutez à deny : un formulaire d'inscription ou de connexion en contient légitimement. HIGH_ENTROPY peut produire plus de faux positifs : essayez-le d'abord en DRY_RUN.
Options
| Option | Valeurs | Rôle |
|---|---|---|
deny | types ci-dessus | Défaut : les secrets. |
inspect | "body" · "text_content" | Où chercher : le corps de la requête (avec inspectBody) et/ou un texte donné via call: () => ({ text }). Défaut : les deux. |
oversize | "deny" · "inspect" · "allow" | Que faire d'une entrée trop grande (corps au-delà de 48 Ko, texte au-delà de 32 Ko). Défaut "inspect" : le début et la fin sont analysés. |
mode | "LIVE" · "DRY_RUN" · "OFF" | Défaut "LIVE". |