跨站指令碼,基於DOM的XSS攻擊
阿新 • • 發佈:2018-12-12
問題:
應用程式的客戶端程式碼從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或指令碼中執行。如果不能避免,則應進行嚴格的過濾。