原文: https://howtodoinjava.com/javascript/mask-sensitive-info-json-logs/
屏蔽敏感信息是处理敏感客户数据的应用的非常实际的需求。 例如,银行应用。 当这些应用在组织内部网中运行时,会多次生成 UI 日志并将其存储在用户的计算机上以进行调试。
在上述情况下,监管要求屏蔽所有此类敏感信息,以使它们不存储在用户的计算机中。 在本教程中,我们将学习对此类敏感信息应用屏蔽。
我假设数据通知 JSON 对象,而敏感信息是以其属性的形式出现的。
结合使用JSON.stringify()和replacer函数
解决方案在于使用函数JSON.stringify()。 此函数将 JavaScript / JSON 对象转换为 JavaScript 对象表示法(JSON)字符串表示形式。 此 JSON 字符串用于记录目的。
JSON.stringify( value [, replacer] [, space] )
这里value是要进行字符串化的对象,replacer是可以转换结果的函数。 在遍历完整对象时,将为 JSON 对象的每个属性调用此replacer函数。 在replacer函数中,您可以在键值对中获得属性(即,属性名称和属性值)。
使用此替换器函数可屏蔽敏感信息。
例如,在下面的示例中,我屏蔽了accountNumber字段。 您可以根据项目需要自定义函数maskInfo。
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
源代码
<!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 originalvar 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>
将我的问题放在评论部分。
学习愉快!
