1. 程式人生 > >跨站指令碼,基於DOM的XSS攻擊

跨站指令碼,基於DOM的XSS攻擊

問題:   

應用程式的客戶端程式碼從docum ent.lo cation、docum ent.U RL、docum ent.referrer或 其 他 任 何攻擊者可以修改的瀏覽器物件獲取資料,如果未驗證資料是否存在惡意程式碼的情況下 ,就將其動態更新到頁面的DOM 節點,應用程式將易於受到基於DOM 的XSS攻擊。 例如:下面的JavaScript程式碼片段可從url中讀取msg資訊,並將其顯示給使用者。  

var url=docum ent.URL;

docum ent.write(u rl.su b string(url.indexO f("msg=")+4,url.len gth );  

該段指令碼解析URL,讀取msg引數的值,並將其寫入頁面。如果攻擊者設計一個惡意的URL,並以JavaScript程式碼作為msg引數,那麼Web瀏覽器就會像顯示HTTP響應那樣執行 該程式碼,應用程式將受到基於DOM 的XSS攻擊。

解決辦法:

  基於DOM 的X SS是將使用者可控的JavaScript資料輸出到HTML頁面中而產生的漏洞,為了避免基於DOM 的XSS攻擊,避免將使用者控制的資料直接輸出到DOM或指令碼中執行。如果不能避免,則應進行嚴格的過濾。