我需要清理未通過輸入驗證的 api 請求,以便將來進行安全審查。我有它的 json 格式,我需要將它們保存為 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.parse 轉換回 json 但它生成的字串無法輕松轉換回 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);
uj5u.com熱心網友回復:
我發現這個包是平的
并使用它來扁平化深度嵌套的 JSON 的結構,然后從其鍵和值中清除所有字符,然后再次使用 flat 和 unflatten 函式將 JSON 恢復到其原始結構。
希望它能幫助其他需要這種解決方案的人!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/532990.html