logging — Как замаскировать чувствительные поля в журналах звездочками. Переполнение стека

У меня есть требование маскировать чувствительные поля (например, SSN, Address, Names) из журналов с помощью ‘***‘текст Кодовая база полностью C ++. Это огромная кодовая база. Я заметил, что большая часть конфиденциальной информации печатается в тегах XML в журналах.
Я очень новичок в C ++. Я был бы признателен, если бы кто-то мог указать мне правильное направление, как это сделать.
Вот пример того, как поля регистрируются в коде:

 AppMsg rsp(a_dictionary::a_dictionary, XML_RSP, 1);
........

log_msg(CONSOLE, " ResponseTime: %d", response_time);

rsp.add_field(OUTPUT_XML, rsp_xml);
rsp.add_field(STATUS_CODE, status_code);
rsp.add_field(STATUS_DESC, status_desc);

журналы выглядят так:

14:02:58 C--[abcInterfaceServer-1]: abc Query ResponseTime: 0
aRspXml:<?xml version="1.0" encoding="UTF-8"?>   //rsp.add_field(OUTPUT_XML, rsp_xml);
<CustomerInfo>
<sourceFlag>1</sourceFlag>
<Response>
<Data>
<LastName>aa</LastName>         //these are the fieds I need to mask
<FirstName>aaa</FirstName>
<PhoneNumber>aaaa</PhoneNumber>
<Street>aaaa</Street>
<City>aa</City>
<State>aaaa</State>
<Zip>aaa</Zip>
.....
[1] STATUS_CODE[1234] : num_inst = 1
[0] 0
[2] STATUS_DESC[12345] : num_inst = 1
[0] "SUCCESS"

Любые идеи будут полезны.

0

Решение

  • Определите объекты, которые содержат / распечатывают конфиденциальные данные
  • Добавьте другой метод (например, publicDataString()) для сериализации открытых данных в печатную строку
  • Измените директивы регистрации, чтобы использовать этот метод.

Или измените operator<<() из этих объектов для вывода только общедоступных данных по умолчанию.

В качестве альтернативы выведите в частные журналы без изменений и создайте сценарий преобразования для удаления всей личной информации при копировании частных журналов в открытые.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]