2011-01-24 105 views
2

我有一個ASP.NET MVC2網站,大量使用Ajax和JSON來從數據庫加載數據並填充HTML。我希望能夠對JSON對象進行編碼,以便將任何HTML呈現爲文本而不是HTML。我很驚訝沒有找到太多的討論/明顯的解決方案,因爲這似乎是一個巨大的潛在的XSS問題。如何爲XSS編碼JSON/Ajax響應?

我可以忽略一些東西嗎?有一種簡單的方法可以做到這一點嗎?或者我需要爲此提出一個內部解決方案?如果我自己這樣做,我應該在模型上,控制器上還是在jQuery中執行此操作?

回答

4

爲了防止XSS,在將HTML輸出到視圖中時對其進行編碼。在JSON中,數據應該保持原始狀態(JSON編碼除外,應由JSON庫自動完成)。

如果您使用JavaScript請求JSON,然後將其中的一部分插入到文檔中。使用document.createTextNode(String)從數據中創建一個textNode(它將處理HTML中具有特殊含義的字符),然後將該textNode插入到文檔中。

1

一位同事向我指出,當我使用.text()時,我使用.html()來呈現JSON數據,這是使用.createTextNode()的一種隱含方式。