原文: 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 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>
将我的问题放在评论部分。
学习愉快!