À propos du projet
Redacted est une bibliothèque Scala et un plugin de compilateur conçu pour empêcher la fuite involontaire de champs sensibles (tels que les identifiants, les données personnelles et autres informations confidentielles) définis dans des `case classes`. Il fonctionne en réécrivant la méthode `toString` par défaut au moment de la compilation, en remplaçant les champs annotés par un espace réservé (par exemple `***`) tout en laissant l'accès direct aux champs inchangé.
**Caractéristiques principales :**
- **Basé sur des annotations** : il suffit d'annoter les champs sensibles avec `@redacted` pour les exclure de la sortie `toString`.
- **Transformation à la compilation** : le plugin de compilateur réécrit `toString` pendant la compilation, garantissant l'absence de surcoût à l'exécution et aucune dépendance au plugin dans le binaire final.
- **Multiplateforme** : prend en charge JVM, Scala.js et Scala Native.
- **Intégration facile** : fournit un plugin sbt (`sbt-redacted`) pour une configuration transparente.
**Exemple d'utilisation :**
```scala
import io.github.polentino.redacted.redacted
case class HttpHeaders(userId: UUID, @redacted apiKey: String, languages: Seq[Locale], correlationId: String)
case class User(id: UUID, nickname: String, @redacted email: String)
```
Après configuration, l'affichage de l'objet ou l'appel à `toString` imprimera `***` pour les champs annotés, tandis que l'accès direct (par exemple `headers.apiKey`) renvoie toujours la valeur réelle.
**Versions de Scala prises en charge :**
- Scala 3 (3.1.3 à 3.9.0, y compris les versions LTS)
- Scala 2.13 et 2.12
**Plateformes :**
- JVM
- Scala.js (1.x)
- Scala Native (0.5)
**Fonctionnement :**
Le plugin de compilateur inspecte chaque définition de type, vérifie s'il s'agit d'une `case class` avec au moins un champ annoté `@redacted`, puis réécrit l'implémentation par défaut de `toString` pour afficher sélectivement `***` pour ces champs.
**Prérequis :**
- Java 17+ (tous les composants sont compilés sur Java 17)
**Ressources supplémentaires :**
- Site web du projet : https://polentino.github.io/redacted/
- Dépôt du plugin sbt : https://github.com/polentino/sbt-redacted
**Adopteurs :**
- InvestSuite (B2B, Scalable & AI-Driven WealthTech)
Redacted est idéal pour les développeurs travaillant avec Scala qui doivent s'assurer que les données sensibles ne sont pas exposées accidentellement dans les journaux ou la sortie console, en particulier dans les applications traitant des identifiants utilisateur, des clés API ou des données liées à la PII/RGPD.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.