Aller au contenu
ZarexDocs

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

server.ts
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

TypeDonnée
CREDIT_CARDNuméro de carte bancaire.
IBANNuméro de compte bancaire international.
API_KEYClé API, y compris Wave, Flutterwave et Paystack.
JWTJeton JWT.
PRIVATE_KEYClé privée.
SSNNuméro de sécurité sociale.
EMAILAdresse e-mail.
PHONENuméro de téléphone.
PASSWORDMot de passe.
HIGH_ENTROPYValeur 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

OptionValeursRôle
denytypes ci-dessusDé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".

Sur cette page