В настоящее время мы в общем случае регистрируем все XML-документы, входящие и выходящие из нашей системы, и некоторые из них содержат пароли в ящике. Мы хотели бы иметь возможность настроить loglog logger/appender, который делает это, чтобы выполнить сопоставление с образцом или аналогичное, и если он обнаруживает, что пароль присутствует, чтобы заменить его (скорее всего, это звездочки). Обратите внимание, что мы не хотим отфильтровывать запись в журнале, мы хотим замаскировать ее часть. Я был бы признателен за советы относительно того, как это будет сделано с помощью журнала. Благодарю.Маскированные пароли с логином?
ответ
Ред. Версия 0.9.27 введено replacement capability. Замены поддерживают регулярные выражения. Например, если вошедшее сообщение было «Идентификатор_пользователь = алиса, PSWD =„моего секрета“», и шаблон вывода был
"%d [%t] $logger - %msg%n",
вы просто изменить шаблон для
"%d [%t] $logger - %replace(%msg){"pswd='.*'", "pswd='xxx'"}%n"
Обратите внимания, что выше использует option quoting.
Предыдущее сообщение журнала будет выводиться как «идента = алиса, PSWD =„ххх“»
Для пылающий производительности, можно также отметить заявление журнала как конфиденциальная и проинструктировать% заменить выполнить замену только для журнала заявления, обозначенные как КОНФИДЕНЦИАЛЬНЫЕ. Пример,
Marker confidential = MarkerFactory.getMarker("CONFIDENTIAL");
logger.info(confidential, "userid={}, password='{}'", userid, password);
К сожалению, текущая версия Logback еще не поддерживает условные замены (на основе маркеров или иным образом). Однако вы можете легко написать свой собственный код замены, расширив ReplocationCompositeConverter. Крик в списке рассылки пользователя-пользователя, если вам нужна дополнительная помощь.
Я считаю, что маскирование является аспектом вашего бизнеса, а не аспектом любой технологии или системы ведения журнала. Бывают ситуации, когда пароли, национальные идентификаторы и т. Д. Должны маскироваться при сохранении их в БД также по юридическим причинам. Вы должны быть в состоянии замаскировать xml, прежде чем передавать его журналу.
Один из способов сделать это - запустить XML через XSLT, который делает это, а затем предоставить его журналу для ведения журнала.
Если вы не хотите этого делать, то LogBack имеет Filters support, который является одним из вариантов (но не правильным).
Но поймите, что любое общее решение из окна, которое вы пытаетесь найти на уровне инфраструктуры ведения журнала, будет субоптимальным, поскольку каждое сообщение журнала будет проверяться на предмет маскировки.
Спасибо. Я согласен, хотя в этом случае я бы предпочел использовать Logback, если у него есть эта возможность. Притворите его не паролем или XML, и я просто хочу заменить какой-либо текст, который регистрируется. Вот что я хочу знать, как это сделать. – SingleShot
Обновлено мое сообщение (последняя строка) –
Фильтры предназначены для отказа от нежелательных событий журнала. Я не хочу отбрасывать события журнала, но хочу фильтровать/заменять/маскировать сообщения журнала событий, если они отвечают определенным критериям. – SingleShot
- 1. Маскированные функции в R
- 2. Python - Маскированные значения сетки
- 3. R: Маскированные функции
- 4. Маскированные подвид UIView?
- 5. Джанго перенаправлять с логином
- 6. Номера строк с логином
- 7. Множественные интерпретаторы с логином
- 8. Профиль связи с логином
- 9. Навигация с логином страницы
- 10. Асинхронный DBAppender с логином
- 11. Небольшая ошибка с логином
- 12. Проблема с логином/кэшированием
- 13. PHP-соединение с логином
- 14. интеграция facebook с логином
- 15. Perl Opendir с логином?
- 16. Две модели с логином
- 17. Приложение Angular.js с логином
- 18. Маскированные входы с PhoneGap на Android
- 19. Как искать частичные/маскированные строки?
- 20. Как разоблачить функции, маскированные `library (...)`?
- 21. Backbone.js - как обращаться с «логином»?
- 22. Facebook 3.0 проблема с логином
- 23. Ember: Приложения с логином пользователя
- 24. Как обращаться с ленивым логином?
- 25. PHP CURL Проблемы с логином
- 26. Приложение Amazon Echo с логином
- 27. Проблемы с логином в codeigniter
- 28. Аутентифицировать пользователь с логином твиттер
- 29. Список адресатов Web.py с логином
- 30. Несколько форм с одним логином
Отлично! Я знал, что что-то вроде этого должно быть в вашем отличном продукте. Спасибо за ваш вклад в мир Java! – SingleShot
@Ceki Знаете ли вы, что '% replace (% msg) {...}' работает в сочетании с выражениями оценщика? То есть если я определю что-то вроде '<имя оценщика =" CONFIDENTIAL "> сообщение.содержит ("pw =") || message.contains ("password =") 'Могу ли я применять правила замены только к лог-линиям, которые удовлетворяют CONFIDENTIAL оценке выражений? То есть что-то вроде '% replace (% msg {CONFIDENTIAL}) {'(pw | password) =. *? (% amp; | $)', '$ 1 = XXX $ 2'}' операторы журнала маскируются должным образом, например, попытка замены в каждой строке журнала на основании времени выполнения –
'% amp;' должно быть, конечно, '&' typo с моей стороны, но больше не может редактировать комментарий –