0

テキストの代わりに ' * ** 'を使用して、機密フィールド (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"

どんなアイデアでも役に立ちます。

4

1 に答える 1

0
  • 機密データを含む/印刷するオブジェクトを特定する
  • publicDataString()公開データを印刷可能な文字列にシリアル化する別のメソッド (例: ) を追加します。
  • このメソッドを使用するには、ロギング ディレクティブを変更します。

または、これらのオブジェクトの を変更して、operator<<()デフォルトでパブリック データのみを出力します。

または、変更なしでプライベート ログに出力し、プライベート ログをパブリック ログにコピーする際にすべてのプライベート情報を削除する変換スクリプトを作成します。

于 2013-09-27T21:37:50.210 に答える