json 在node.js中,如何清理输入验证失败的API请求,以便将来进行安全检查

bihw5rsg  于 2022-11-19  发布在  Node.js
关注(0)|答案(1)|浏览(112)

我需要对输入验证失败的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);
kh212irz

kh212irz1#

我找到这个包裹flat
和值中的所有字符,然后再次使用flat与unflatted函数将JSON还原为原始结构。
希望它能帮助其他需要这种解决方案的人!

相关问题