2023-05-24 14:32:02
XSS(跨站脚本攻击)是一种通过向网页注入恶意脚本实现攻击的技术,其核心在于利用Web应用的漏洞执行非预期的脚本代码。防御XSS需从输入过滤、输出编码、安全配置等多层面综合施策。
一、XSS攻击的危害前端漏洞:攻击者构造链接
后端漏洞:URL参数未经过滤直接返回前端,如
留言评论:攻击者在评论框输入<img src="null" onerror="alert(document.cookie)">,后端未过滤直接存储并展示,导致所有用户加载页面时触发攻击。
修改昵称时注入<div style="width:expression(alert('XSS'))">(针对IE7-)。
通过<a onclick="alert(1)">绑定点击事件。
输出前使用URLEncode转义。
输入时验证格式(如URL需符合正则表达式)。
禁用eval()解析动态数据,改用JSON.parse()处理JSON。
禁止直接执行用户输入的代码(如通过Function构造函数)。
原生JS:优先使用innerText(安全)而非innerHTML(危险)。
jQuery:使用text()(安全)而非html()(危险)。
模板引擎:如EJS中,用<%- %>转义输出,避免<%= %>直接渲染。
HTML内容:实体编码。
JavaScript字符串:使用x转义。
URL路径:百分号编码。
HttpOnly:防止JS访问document.cookie(如Set-Cookie: id=a3fWa; HttpOnly)。
X-XSS-Protection:启用浏览器内置防护(如X-XSS-Protection: 1; mode=block)。
Content-Security-Policy (CSP):限制脚本加载源(如default-src 'self')。
对用户输入进行白名单过滤(如仅允许字母、数字)。
使用库如DOMPurify净化HTML。
OWASP ESAPI:提供输入验证、输出编码等安全接口。
XSS Filter:自动检测并中和恶意脚本。
提交时:对输入内容进行编码(如<转为<)。
展示时:使用安全API渲染,防止脚本注入。