我們最近登錄了其他人的代碼,這些代碼已經過DOM XSS攻擊測試並失敗。 基本上網址片段被直接通入jQuery選擇和啓用JavaScript被注入,像這樣:防止DOM XSS
"http://website.com/#%3Cimg%20src=x%20onerror=alert%28/XSSed/%29%3E)"
$(".selector [thing="+window.location.hash.substr(1)+"]");
的問題是,這是在其整個腳本存在的和將需要大量的迴歸測試的至例如固定如果我們將數據轉義出來,如果語句不再返回true,數據將不會匹配。
有問題的JavaScript文件在構建時會連接到很多較小的文件,所以這個問題變得更加難以解決。
有沒有辦法通過一些全局代碼來防止這些DOM XSS攻擊,而無需通過並調試每個實例。
我建議大家在腳本的頂部,以檢測XSS攻擊中常用的字符加少許正則表達式只是要殺死腳本,如果它返回true。
var xss = window.location.href.match(/(javascript|src|onerror|%|<|>)/g);
if(xss != null) return;
這似乎工作,但我並不是100%滿意的解決方案。有沒有人有更好的解決方案或任何有用的見解,他們可以提供?
是的,你將需要解決這一切遍及你的文件。 「逃避數據破壞if語句」意味着什麼?爲什麼jQuery選擇器存儲在URL哈希中呢? – Bergi
基本上他們的分頁使用GET參數和URL片段,即使每個加載都是回發。然後他們將這些信息直接用於jQuery而不解析它,並且if(param [0] ==「str」)等等有很多邏輯。爲了避免這種情況,我必須避開這兩個值。 – sidonaldson
是的,你應該使用一個合適的路由器和狀態<->選擇器映射器 – Bergi