原文: https://howtodoinjava.com/javascript/mask-sensitive-info-json-logs/

屏蔽敏感信息是处理敏感客户数据的应用的非常实际的需求。 例如,银行应用。 当这些应用在组织内部网中运行时,会多次生成 UI 日志并将其存储在用户的计算机上以进行调试。

在上述情况下,监管要求屏蔽所有此类敏感信息,以使它们不存储在用户的计算机中。 在本教程中,我们将学习对此类敏感信息应用屏蔽。

我假设数据通知 JSON 对象,而敏感信息是以其属性的形式出现的。

结合使用JSON.stringify()replacer函数

解决方案在于使用函数JSON.stringify()。 此函数将 JavaScript / JSON 对象转换为 JavaScript 对象表示法(JSON)字符串表示形式。 此 JSON 字符串用于记录目的。

  1. JSON.stringify( value [, replacer] [, space] )

这里value是要进行字符串化的对象,replacer是可以转换结果的函数。 在遍历完整对象时,将为 JSON 对象的每个属性调用此replacer函数。 在replacer函数中,您可以在键值对中获得属性(即,属性名称和属性值)。

使用此替换器函数可屏蔽敏感信息。

例如,在下面的示例中,我屏蔽了accountNumber字段。 您可以根据项目需要自定义函数maskInfo

  1. var unmaskedData = { "name":"Lokesh", "accountNumber":"3044444444", "city":"New York"};
  2. var maskedData = JSON.stringify( unmaskedData, maskInfo );
  3. function maskInfo (key, value) {
  4. var maskedValue = value;
  5. if (key == "accountNumber")
  6. {
  7. if(value && value.length > 5) {
  8. maskedValue = "*" + maskedValue.substring(value.length - 4, value.length);
  9. } else {
  10. maskedValue = "****";
  11. }
  12. }
  13. return maskedValue;
  14. }
  15. Output:
  16. {
  17. "name": "Lokesh",
  18. "accountNumber": "*4444", //Masked account number
  19. "city": "New York"
  20. }

数据屏蔽实时演示

https://howtodoinjava.com/wp-content/downloads/maskingDemo.html

源代码

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript - Mask Sensitive Information Demo</h2>
  5. <p>Input JSON payload in left box and press submit button. Masked data will appear on right box.</p>
  6. <table>
  7. <tr>
  8. <th>Unmasked Data</th>
  9. <th>Masked Data</th>
  10. </tr>
  11. <tr>
  12. <td><textarea id="unmasked" rows="10" cols="30">{ "name":"Lokesh", "accountNumber":"3044444444", "city":"New York"}</textarea></td>
  13. <td><textarea id="masked" rows="10" cols="30"></textarea></td>
  14. </tr>
  15. <tr><td colspan="2"><input type="button" name="submit" value="Submit" onclick="submit()"></td></tr>
  16. </table>
  17. <script>
  18. function submit() {
  19. var unmaskedData = JSON.parse(document.getElementById("unmasked").value);
  20. var maskedData = JSON.stringify(unmaskedData, maskInfo, ' ');
  21. document.getElementById("masked").value = maskedData;
  22. }
  23. function maskInfo(key, value)
  24. {
  25. //Default value is same as original
  26. var maskedValue = value;
  27. if (key == "accountNumber")
  28. {
  29. if(value && value.length > 5) {
  30. maskedValue = "*" + maskedValue.substring(value.length - 4, value.length);
  31. } else {
  32. maskedValue = "****";
  33. }
  34. }
  35. return maskedValue;
  36. }
  37. </script>
  38. </body>
  39. </html>

将我的问题放在评论部分。

学习愉快!