2014-02-09 48 views
0

在其中一個頁面(用戶的配置文件)上,用戶可以編輯其信息。更新的信息(名稱,標語等)然後保存使用的AJAX。這些是我遵循的步驟:在顯示更新數據之前使用javascript清除用戶輸入

a)用戶輸入數據並點擊保存。

B)我的(未驗證)數據發送到用ajax

C)的數據在服務器端的XSS清理服務器,並使用活動記錄,以避免SQL注入保存。

d)在客戶端,如果AJAX請求成功,則用戶的新數據(客戶端未經驗證的數據)將替換舊數據。

現在說它是惡意用戶,他們插入一些JS代碼,JS代碼將在更新後一次工作,因爲數據沒有在客戶端進行檢查。但是,如果用戶刷新屏幕,乾淨的驗證數據取代它,JS將不會運行。這種方法是否存在潛在的安全漏洞?

+2

不,這是常用的方法。永遠不要相信瀏覽器(或任何其他來自網絡的數據)。只要您在服務器上正確地進行清理和驗證,他們就可以向您發送任何您想要的內容,而您的代碼將忽略它。他們刷新,他們看到的是他們發送垃圾之前的數據。你可以做額外的JavaScript驗證,但這是一個可用性的東西來顯示用戶的拼寫錯誤或缺少數據,不要信任它,在服務器上驗證。 –

回答

0

如果數據不包含HTML,請使用$ .text(或.innerText)和$ .attr(或.setAttribute)更新視圖。或者,您的ajax調用可以返回安全的HTML片段。

相關問題