如何使用星号屏蔽日志中的敏感字段.C++
How to Mask Sensitive Fields in Logs With Asterisks. C++
我需要使用文本的"****"来屏蔽日志中的敏感字段(如SSN,地址,名称)。代码库完全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"
任何想法都会有所帮助。
- 识别包含/打印敏感数据的对象
- 添加另一种方法(例如
publicDataString()
) 将公共数据序列化为可打印字符串 - 修改日志记录指令以使用此方法。
或者,修改这些对象的operator<<()
,默认仅输出公共数据。
修改即可输出到私有日志,并创建一个转换脚本来剥离所有私有信息,同时将私有日志复制到公共日志。
相关文章:
- 将结构字段的类型展开为可变模板参数
- 将位字段导出到数组
- 为了方便起见,我应该避免公开私有字段变量吗
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 在java中读取c++字节的位字段
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 私有字段对象与私有继承?
- 声明没有默认构造函数的字段
- C++内存模型和位字段的最大序列
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 仅匹配集合中的某些字段
- 结构字段名称与 GDB 中的 STL 数组冲突
- 如何使用位字段将数据从二进制文件复制到结构中?
- 结构体和类的不同大小(),彼此具有相同的字段类型
- 如何避免在数据结构中包含存储为字段的类?
- 聚合初始化和删除的复制构造函数,也称为不可复制的 obejcts 作为字段
- C++:用户定义的类,以成员字段作为地址