簡體   English   中英

在 node.js 中如何清理 api 未通過輸入驗證以供將來安全審查的請求

[英]in node.js how to sanitize api requests that failed input validation for future security review

我需要清理未通過輸入驗證的 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); 

我找到了這個 package公寓

並用它來展開深度嵌套的 JSON 的結構,然后清除其鍵和值中的所有字符,然后再次使用 flat 和 unflatten function 將 JSON 恢復到其原始結構。

希望它能幫助其他需要這種解決方案的人!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM