Об этом проекте
Redacted — это библиотека Scala и плагин компилятора, предназначенные для предотвращения непреднамеренной утечки конфиденциальных полей (таких как учётные данные, персональные данные и другая конфиденциальная информация), определённых внутри `case classes`. Они работают путём переписывания стандартного метода `toString` на этапе компиляции, заменяя аннотированные поля заполнителем (например, `***`), при этом прямой доступ к полям не затрагивается.
**Ключевые особенности:**
- **На основе аннотаций**: просто пометьте конфиденциальные поля аннотацией `@redacted`, чтобы исключить их из вывода `toString`.
- **Преобразование на этапе компиляции**: плагин компилятора переписывает `toString` во время компиляции, обеспечивая отсутствие накладных расходов во время выполнения и отсутствие зависимости от плагина в итоговом бинарном файле.
- **Кроссплатформенность**: поддерживаются JVM, Scala.js и Scala Native.
- **Простая интеграция**: предоставляется плагин sbt (`sbt-redacted`) для удобной настройки.
**Пример использования:**
```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)
```
После настройки дамп объекта или вызов `toString` выведет `***` для аннотированных полей, в то время как прямой доступ (например, `headers.apiKey`) по-прежнему возвращает реальное значение.
**Поддерживаемые версии Scala:**
- Scala 3 (от 3.1.3 до 3.9.0, включая LTS-версии)
- Scala 2.13 и 2.12
**Платформы:**
- JVM
- Scala.js (1.x)
- Scala Native (0.5)
**Как это работает:**
Плагин компилятора проверяет каждое определение типа, определяет, является ли оно `case class` хотя бы с одним полем, помеченным аннотацией `@redacted`, а затем переписывает стандартную реализацию `toString` для выборочного вывода `***` для этих полей.
**Требования:**
- Java 17+ (все компоненты скомпилированы на Java 17)
**Дополнительные ресурсы:**
- Веб-сайт проекта: https://polentino.github.io/redacted/
- Репозиторий плагина sbt: https://github.com/polentino/sbt-redacted
**Пользователи:**
- InvestSuite (B2B, масштабируемая WealthTech-платформа на базе ИИ)
Redacted идеально подходит для разработчиков, работающих со Scala, которым необходимо гарантировать, что конфиденциальные данные не будут случайно раскрыты в логах или выводе в консоль, особенно в приложениях, работающих с учётными данными пользователей, ключами API или данными, связанными с PII/GDPR.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.