我需要对输入验证失败的api请求进行消毒,以便将来进行安全检查。我有json格式的api请求,我需要将它们保存为json格式。
例如,这是一个有效json,但我无法将其记录到我们的系统中,如下所示:
{
"<script>alert('test!!!!');</script>": "<script>alert('xss12!!!!');</script>"
}
我需要一个lib或者在node.js中以某种方式来清理它,并将其保存为json,然后记录它,例如将其转换为utf:
{
"#utf3c#script#utf3c#alert('test#utf3c##utf3c##utf3c##utf3c#')#utf3c##utf3c##utf3c#script#utf3c#": "#utf3c#script#utf3c#alert('xss12#utf3c##utf3c##utf3c#')#utf3c##utf3c##utf3c#script#utf3c#"
}
我有一个想法,用JSON将其转换为字符串。stringify用这个替换器将其转换为codePointAt,用字符串替换,然后用JSON将其转换回json。parse但它生成的字符串不能很容易地转换回json,因为它会破坏复杂的嵌套json。
function replacer(match, index, wholeString) {
const result = "codePoint#" + wholeString.codePointAt(index);
return result;
}
const dataToEncodeAsString = JSON.stringify(dataToEncode);
const test = dataToEncodeAsString.replace(/[^a-zA-Z1-9:'" ]/g, replacer);
console.log(test);
1条答案
按热度按时间kh212irz1#
我找到这个包裹flat
和值中的所有字符,然后再次使用flat与unflatted函数将JSON还原为原始结构。
希望它能帮助其他需要这种解决方案的人!