我想實現OWASP提到的'JSON Sanitizer'驗證。 我的理解是,這需要在兩個地方進行:如何在服務器端使用JSON Sanitizer?
JSON數據(請求)從客戶端或其他系統上接收 - 這需要在服務器端進行處理之前進行消毒
(響應)JSON數據被髮送到客戶端 - 這需要在服務器端發送到客戶端
之前進行消毒是不是足夠,我剛纔所說的消毒方法JSON Sanitiz該JSON數據庫?
是否會進行所有的衛生處理或者是否會在這方面進行其他驗證?
我想實現OWASP提到的'JSON Sanitizer'驗證。 我的理解是,這需要在兩個地方進行:如何在服務器端使用JSON Sanitizer?
JSON數據(請求)從客戶端或其他系統上接收 - 這需要在服務器端進行處理之前進行消毒
(響應)JSON數據被髮送到客戶端 - 這需要在服務器端發送到客戶端
之前進行消毒是不是足夠,我剛纔所說的消毒方法JSON Sanitiz該JSON數據庫?
是否會進行所有的衛生處理或者是否會在這方面進行其他驗證?
OWASP JSON Sanitizer將JSON類輸入轉換爲語法有效的&可嵌入JSON。
它通常用來拍攝「 JSON 」通過特別的方法生產服務器上像
"{ \"output\": " + stringOfJson + " }"
,並確保它是語法有效以便它可以傳遞給JSON.parse
在客戶端上,和嵌入,以便它可以被嵌入在一個更大的HTML或XML響應等
<script>var jsonUsedByScriptsOnPage = {$myJson};</script>
如果您的客戶端可能發送狡猾的JSON,您肯定可以在您的服務器上使用它。
請注意,您的服務器仍然需要將JSON視爲不可信,就像它在任何其他字符串中收到的響應一樣,該響應沒有以有效憑證到達。
https://github.com/OWASP/json-sanitizer#security解釋
消毒JSON不能保護應用程序從Confused Deputy attacks
var myValue = JSON.parse(sanitizedJsonString); addToAdminstratorsGroup(myValue.propertyFromUntrustedSource);
這會有所幫助。那麼如何確保JSON Payload沒有任何惡意腳本來執行像XSS這樣的攻擊?有沒有其他庫可以驗證JSON負載是否有任何腳本內容? – yathirigan
by> dodgy <你的意思是不正確的格式或惡意內容(但格式正確)? – yathirigan
@yathirigan,兩者。如果另外一個值得信賴的客戶端向您發送由特殊方法組成的JSON,那麼攻擊者可能會導致這種情況:「{」secret「:」'+ secret +'「,」foo「:」'+ foo +'「}」客戶向您發送違反您之間某項合同的消息。例如,如果它們導致foo爲「'\」,「otherProperty \」:\「value'',那麼他們已經有效地引入了客戶不希望存在的屬性。沒有任何只能看到字符串的消毒可以加強財產或物體邊界。 –