🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# JavaScript 日志 – 在 JSON 中屏蔽敏感信息 > 原文: [https://howtodoinjava.com/javascript/mask-sensitive-info-json-logs/](https://howtodoinjava.com/javascript/mask-sensitive-info-json-logs/) 屏蔽敏感信息是处理敏感客户数据的应用的非常实际的需求。 例如,银行应用。 当这些应用在组织内部网中运行时,会多次生成 UI 日志并将其存储在用户的计算机上以进行调试。 在上述情况下,监管要求屏蔽所有此类敏感信息,以使它们不存储在用户的计算机中。 在本教程中,我们将学习对此类敏感信息应用屏蔽。 我假设数据通知 JSON 对象,而敏感信息是以其属性的形式出现的。 ## 结合使用`JSON.stringify()`和`replacer`函数 解决方案在于使用函数[`JSON.stringify()`](https://docs.microsoft.com/en-us/scripting/javascript/reference/json-stringify-function-javascript)。 此函数将 JavaScript / JSON 对象转换为 JavaScript 对象表示法(JSON)字符串表示形式。 此 JSON 字符串用于记录目的。 ```java JSON.stringify( value [, replacer] [, space] ) ``` 这里`value`是要进行字符串化的对象,`replacer`是可以转换结果的函数。 在遍历完整对象时,将为 JSON 对象的每个属性调用此`replacer`函数。 在`replacer`函数中,您可以在键值对中获得属性(即,属性名称和属性值)。 使用此替换器函数可屏蔽敏感信息。 例如,在下面的示例中,我屏蔽了`accountNumber`字段。 您可以根据项目需要自定义函数`maskInfo`。 ```java var unmaskedData = { "name":"Lokesh", "accountNumber":"3044444444", "city":"New York"}; var maskedData = JSON.stringify( unmaskedData, maskInfo ); function maskInfo (key, value) { var maskedValue = value; if (key == "accountNumber") { if(value && value.length > 5) { maskedValue = "*" + maskedValue.substring(value.length - 4, value.length); } else { maskedValue = "****"; } } return maskedValue; } Output: { "name": "Lokesh", "accountNumber": "*4444", //Masked account number "city": "New York" } ``` ## 数据屏蔽实时演示 <https://howtodoinjava.com/wp-content/downloads/maskingDemo.html> #### 源代码 ```java <!DOCTYPE html> <html> <body> <h2>JavaScript - Mask Sensitive Information Demo</h2> <p>Input JSON payload in left box and press submit button. Masked data will appear on right box.</p> <table> <tr> <th>Unmasked Data</th> <th>Masked Data</th> </tr> <tr> <td><textarea id="unmasked" rows="10" cols="30">{ "name":"Lokesh", "accountNumber":"3044444444", "city":"New York"}</textarea></td> <td><textarea id="masked" rows="10" cols="30"></textarea></td> </tr> <tr><td colspan="2"><input type="button" name="submit" value="Submit" onclick="submit()"></td></tr> </table> <script> function submit() { var unmaskedData = JSON.parse(document.getElementById("unmasked").value); var maskedData = JSON.stringify(unmaskedData, maskInfo, ' '); document.getElementById("masked").value = maskedData; } function maskInfo(key, value) { //Default value is same as original var maskedValue = value; if (key == "accountNumber") { if(value && value.length > 5) { maskedValue = "*" + maskedValue.substring(value.length - 4, value.length); } else { maskedValue = "****"; } } return maskedValue; } </script> </body> </html> ``` 将我的问题放在评论部分。 学习愉快!