Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
token-proxy — Un proxy transparent de masquage des PII pour le trafic API LLM. Se place entre une application et un fournisseur LLM (actuellement Anthropic), pseudonymisant les données sensibles en sortie et les restaurant en entrée. Construit avec FastAPI + httpx. | Kitploit
Outils/GitHubGitHub/zolderio/token-proxy
Outils DéfensifsOutils de Chiffrement/DéchiffrementExfiltration de DonnéesSécurité CloudProtection de la Vie PrivéeRenseignement sur les MenacesSécurité des APISécurité de l'IAAnalyse de Journaux
GitHubzolderio/token-proxy

token-proxy

Un proxy transparent de masquage des PII pour le trafic API LLM. Se place entre une application et un fournisseur LLM (actuellement Anthropic), pseudonymisant les données sensibles en sortie et les restaurant en entrée. Construit avec FastAPI + httpx.

28124il y a 5 moisVérifié par Kitploit
Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

llm-token-proxy

Un proxy transparent de réduction des données personnelles pour le trafic API des LLM. Se place entre votre application et le fournisseur de LLM, pseudonymisant les données sensibles à l'aller et les restaurant au retour.

Votre LLM ne voit jamais de vrais noms, e-mails, IP ou domaines — il travaille exclusivement avec des pseudonymes structurés comme [email protected]. Votre application récupère les valeurs originales, de manière transparente.

Pourquoi

Lors de l'utilisation de LLM pour des opérations de sécurité, de réponse à incident ou toute tâche impliquant des données clients réelles, vous risquez d'envoyer des données personnelles à des API tierces. Ce proxy résout ce problème en :

  • Remplaçant les données personnelles réelles par des pseudonymes déterministes et structurés avant qu'elles n'atteignent le LLM
  • Restaurant les valeurs originales dans la réponse avant qu'elle n'atteigne votre application
  • Garantissant la cohérence au sein d'une session (une même entrée correspond toujours au même pseudonyme)
  • Fonctionnant de manière transparente — aucune modification de code nécessaire dans votre application

Démarrage rapide

# 1. Créez votre configuration
cp config.json.example config.json
# Modifiez config.json avec vos domaines internes, entités connues, etc.

# 2. Lancez avec Docker
docker build -t llm-token-proxy .
docker run -p 8090:8080 -v ./config.json:/app/config.json llm-token-proxy

# 3. Pointez votre application vers le proxy
export ANTHROPIC_BASE_URL=http://localhost:8090/session/my-session/

Voilà. Vos appels API Anthropic passent désormais par le proxy avec les données personnelles réductées.

Comment ça fonctionne

Flux typique du Token Proxy

Flux typique : Application → Token Proxy (réduction des données personnelles) → API LLM (pseudonymes uniquement) → Token Proxy (restauration des originaux) → Application

Pipeline de détection (3 passes)

  1. Regex — e-mails, adresses IP, domaines et motifs configurables (personnes connues, organisations, noms d'hôte)
  2. NER — reconnaissance d'entités nommées spaCy pour détecter les noms de personnes et d'organisations que la regex manque
  3. Extraction de nom d'utilisateur — parties locales d'e-mail nues (ex. admin de [email protected])

Format des pseudonymes

Type d'entitéExemple interneExemple externe
E-mail[email protected][email protected]
Domainedomain-internal-001.comdomain-external-001.net
IP10.99.99.1 (RFC1918)IP donneuse basée sur l'ASN (voir ci-dessous)
Personneperson_internal_001person_external_001
Organisationorg_internal_001org_external_001
Nom d'hôtehost_001host_001

Les pseudonymes sont déterministes au sein d'une session — une même valeur réelle correspond toujours au même pseudonyme.

Pseudonymisation IP respectueuse du contexte

Lorsqu'un LLM analyse des journaux de sécurité, le fournisseur d'hébergement et la géolocalisation d'une adresse IP comptent — une connexion depuis une IP Hetzner en Allemagne raconte une histoire différente d'une connexion depuis un FAI résidentiel aux États-Unis. Un simple remplacement par des IP de plage de documentation (ex. 198.51.100.x) détruit ce contexte.

Avec la base de données optionnelle MaxMind GeoLite2-ASN, le proxy remplace les IP réelles par une IP différente du même ASN et sous-réseau. Le LLM voit une IP d'apparence réelle qui résout le même fournisseur d'hébergement et une géographie approximative — mais ce n'est pas l'adresse réelle.

  • Une IP Hetzner est remplacée par une autre IP Hetzner du même préfixe
  • Une IP Cloudflare reste une IP Cloudflare
  • Les IP internes/RFC1918 sont toujours mappées à 10.99.99.x (aucun contexte ASN à préserver)
  • Sans la base de données GeoIP, les IP externes retombent sur 198.51.100.x (plage de documentation)

L'IP donneuse est choisie de manière déterministe via HMAC avec un sel par session, de sorte qu'une même IP réelle corresponde toujours au même donneur au sein d'une session, mais différentes sessions produisent des mappages différents.

Configuration

Le proxy est livré avec un config.json vide — aucune liste de mots intégrée ni hypothèse spécifique au domaine. Le config.json.example inclus est paramétré pour les opérations de sécurité avec Microsoft Sentinel et Entra ID (plus de 8 000 noms de tables/colonnes KQL, termes d'autorisation Graph API, domaines de référence sécurité). Si cela correspond à votre cas d'usage, copiez ce dont vous avez besoin. Si vous utilisez le proxy pour un domaine différent (santé, juridique, finance, etc.), partez de la configuration vide et construisez vos propres listes.

config.json

{
  "internal_domains": ["yourcompany.com"],
  "partner_domains": ["partnercorp.com"],
  "internal_ip_ranges": ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"],
  "known_persons": ["John Smith"],
  "known_orgs": ["YourCompany"],
  "known_hostnames": ["DC01", "FS01"],
  "ner_enabled": true,
  "ner_skiplist": [],
  "redaction_enabled": true
}
  • internal_domains — domaines classés comme "internes" (obtiennent des pseudonymes _internal_)
  • partner_domains — domaines classés comme "partenaire"
  • internal_ip_ranges — plages CIDR pour la classification IP interne
  • known_persons/orgs/hostnames — entités détectées par regex (détection garantie)
  • ner_enabled — activer/désactiver le NER spaCy (nécessite spacy + en_core_web_sm)
  • ner_skiplist — termes que le modèle NER doit ignorer (réduit les faux positifs)
  • redaction_enabled — interrupteur principal ; quand false, le proxy devient un simple passage
  • pseudonymize_domains — quand false, les domaines sont transmis sans modification (les e-mails, IP, noms sont toujours réduits). Utile lorsque les noms de domaine portent un contexte important pour le LLM (par exemple, distinguer outlook.com de protonmail.com) et ne sont pas considérés comme sensibles.

Variables d'environnement

VariableValeur par défautRôle
ANTHROPIC_API_BASEhttps://api.anthropic.comURL de l'API Anthropique en amont
TOKEN_PROXY_CONFIG_PATH/app/config.jsonChemin vers le fichier de configuration
LOG_LEVELinfoNiveau de journalisation
GEOIP_ASN_DB_PATH/app/data/GeoLite2-ASN.mmdbBase de données MaxMind GeoLite2-ASN (optionnelle)

API de configuration runtime

Gérez les listes blanches et activez/désactivez la réduction sans redémarrer :

# Voir toutes les listes blanches
curl http://localhost:8090/token-proxy/config/whitelist

# Ajouter des termes à la liste de saut NER (réduit les faux positifs)
curl -X POST http://localhost:8090/token-proxy/config/whitelist \
  -H "Content-Type: application/json" \
  -d '{"category": "ner_skiplist", "values": ["EvoSTS", "Hetzner"]}'

# Ajouter des domaines à la liste blanche (ne jamais pseudonymiser ceux-ci)
curl -X POST http://localhost:8090/token-proxy/config/whitelist \
  -H "Content-Type: application/json" \
  -d '{"category": "domain_allowlist", "values": ["github.com"]}'

# Désactiver la réduction (mode passage)
curl -X POST http://localhost:8090/token-proxy/config/status \
  -H "Content-Type: application/json" \
  -d '{"redaction_enabled": false}'

Catégories de liste blanche : ner_skiplist, domain_allowlist, known_persons, known_orgs, known_hostnames

API d'audit et d'inspection

Inspectez ce que fait le proxy en temps réel :

# Lister les sessions actives
curl http://localhost:8090/token-proxy/sessions
Télécharger l’outil