- 输入校验:在接收用户数据之前,进行数据校验,剥离特殊字符,只接受符合要求的数据输入,比如限制输入的字符为数字、字母、空格等。
示例:
function stripHtmlChars(data) {
return data.replace(/(<([^>]+)>)/ig,"");
}
let userInput = "";
let cleanInput = stripHtmlChars(userInput); // 通过 stripHtmlChars 函数过滤掉特殊字符
console.log(cleanInput); // 输出 “alert('xss');”
- 输出转义:在输出数据时,进行特殊字符编码,避免浏览器将其解析为 HTML 标签。可以使用相关编码函数(比如
encodeURI()
、encodeURIComponent()
、escape()
等)对数据进行转义。
示例:
let maliciousInput = "";
let encodedInput = encodeURI(maliciousInput); // 对输入进行 URI 编码
console.log(encodedInput); // 输出 “%3Cscript%3Ealert('xss')%3B%3C/script%3E”
- CSP(Content Security Policy):设置 CSP,限制页面上可执行的代码来源,以防止恶意注入脚本的攻击。可以在 HTTP 头、HTML 中的 标签或者