TGViewer
StringConcat - разработка без боли и сожалений StringConcat - разработка без боли и сожалений @stringconcat · 3.72K subscribers
Post #219 3.05K
Мы разрабатываем финансовое приложение, хранящее номер кредитной карты. Аналог PayPal
Как бы вы гарантировали что номер кредитной карты не попадет в логи?


Вот что я ответил на собеседовании:
⁃ Нельзя фокусироваться только на бекенде, нужно рассмотреть весь путь карты от веб-браузера и до БД.

⁃ Как можно раньше в приложении обернуть Номер Карты в объект CardNumber, у которого нет метода getCardNumber(): String. Но нам же его надо будет положить в базу данных, поэтому создадим getEncryptedCardNumber().

- Не забываем переопределить`toString()` чтобы он возвращал, что-то типа 4565-****-****-**** Теперь можно отдавать Джуну логировать.

⁃ В базе данных храним номер карты зашифрованным (шифруем на ключ пользователя или сервера — отдельная дискуссия)

⁃ Когда создаем инстанс CardNumber(cardNumber: String) то сразу же шифруем номер карты, и не храним его в открытом виде, чтобы ни случайный StackTrace нас не выдал ни Дамп памяти

⁃ Сканируем все логи ищя паттерн кредитной карты. Это и логи nginx, и балансировщиков и логов приложения и пр.

⁃ Сканируем логи тестов при сборке. Нашли номер кредитки — роняем билд

⁃ Но все равно остается опасность, что несмотря на то что мы спрятали номер карты как можно раньше в нашем приложении, он будет залогирован где-то на ранних этапах, типа балансировщиков. Поэтому можно предложить шифровать номер карты сразу на клиенте, используя публичный ключ сервера, и прямо в таком виде сохранять его в БД. И мы гарантируем что на всем пути от веб-браузера и до БД номер карты не попадет в открытом виде ни в какие логи.
  • 👍 32
  • 🤔 9
More from @stringconcat
  1. Sep 26, 2026Вы не заметили, но в интернетах разразился скандал вселенского масштаба. Вопрос вот в чём:…
  2. Sep 21, 2026А сегодня снова не совсем обычный пост (пока я занят написанием духоты). Знаю, что у многи…
  3. Sep 18, 2026Сегодня необычный выпуск — подкаст с нашим старым бро Константином Могилевкиным. Константи…
  4. Sep 15, 2026Я частенько в своих постах упоминаю ключевую характеристику для сотрудника — автономность.…
  5. Sep 8, 2026Продолжаем обзор микросервисных изделий. На этот раз подписчики прислали мне архитектуру,…
  6. Sep 4, 2026Начинаем сезон видосиков с обзора карьерных путей (не переживайте, духота тоже будет, но п…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →