2012-02-25 39 views
2

這不是eval()JSON中是否有任何注入漏洞?

讓說我#password口令輸入,我送這個數據作爲JSON對象

var toSend = { 
    text: 'hello', 
    pass: $("#password").val() 
}; 

我需要驗證輸入的一部分嗎? 將", you: "are hacked"作爲單個字符串或空字符串和另一個屬性在通信的另一端進行解釋?

編輯:在瀏覽器環境中什麼都不會發生,但是如果JSON會通過互聯網以純文本形式發送並再次解析?

+1

所有用戶提交的數據都是惡意的,必須清理乾淨。 – 2012-02-25 21:48:37

+0

@MichaelRobinson:不是這種情況。解析器會自動執行此操作。 – 2012-02-25 21:51:55

+0

永遠不會信任用戶輸入,無論默認設置有多安全。這是處理這些事情時的一個規則。始終保持謹慎。 – Joseph 2012-02-25 21:55:21

回答

7

如果你這樣做你所描述的東西,什麼都不會發生,因爲JSON是被轉義(如果你使用的解析器(JS對象 - > JSON))

沒有在瀏覽器中會發生環境,但如果JSON將通過互聯網作爲純文本發送並再次解析?

如果你正在解析JS對象的字符串版本(JSON),所有的值都會被禁止使用,所以你必須在之後轉義它們。

+0

準確地說,stringify轉義它,並解析unescapes它。 – Neil 2012-02-25 22:24:17

+0

@尼爾:很好說。編輯我的問題,謝謝。嗯,你會如何調用一個工具來將JS對象串聯起來? – 2012-02-25 22:30:39

+1

@Martin:JS-O-String-O-Mate? :d – hayavuk 2012-02-25 23:04:26

相關問題