防住html 方式插入到頁面中的即可,需要根據具體的項目來防護。有一種防護是將所有的外部危險的數據都過濾掉:
1.
function xssFilterStr(e) {
var t = {
scriptReg: /<\s*script(.*?)\s*>|<\s*\/\s*script\s*>/gim, // 去除script 標簽
styleReg: /<\s*style(.*?)\s*>|<\s*\/\s*style\s*>/gim, // 去除style標簽
eventReg: /\bon[A-Za-z]+\s*\=/gim, // 去除onClick 等事件
pseudoProReg: /(?:javascript|jav\s+ascript|\&#\d+|\&#x)/gim, // 去除 特殊字符 &#x
otherReg: /&#x|data:/gim, // 去除data: 關鍵字
expressionReg: /expression\s*\(/gim // 去除express 關鍵字
}
, n = e.match(/(href|src)\s*=\s*("|')(.*?)("|')/gim); // 去除href 中的鏈接
for (var r in t)
e = e.replace(t[r], "");
try {
for (var i = 0; i < n.length; i++) {
var o = n[i].split("/");
o && o[2] && (o[2].startsWith(document.domain) || (e = e.replace(n[i], "")))
}
} catch (s) {}
return e
}
2.容易造成xss 的有一種是 將script 截斷 ,如一個變量 字符中包含"</script><script>alert("xx")</script>" 會將當前script 結束掉,然后 alert("xx")
jquery 的防護可以考慮重寫 html 等會造成安全隱患的方法
vue 中的:
