【问题标题】:How to Mask Sensitive Fields in Logs With Asterisks. C++如何用星号屏蔽日志中的敏感字段。 C++
【发布时间】:2013-10-04 07:15:08
【问题描述】:

我需要使用文本的“***”来屏蔽日志中的敏感字段(如 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"

任何想法都会有所帮助。

【问题讨论】:

标签: c++ logging masking


【解决方案1】:
  • 识别包含/打印敏感数据的对象
  • 添加另一种方法(例如publicDataString())将公共数据序列化为可打印字符串
  • 修改日志记录指令以使用此方法。

或者,修改这些对象的operator&lt;&lt;(),使其默认只输出公共数据。

或者,不加修改地输出到私有日志,并创建一个转换脚本来剥离所有私有信息,同时将私有日志复制到公共日志。

【讨论】:

    猜你喜欢
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多