是什么?
XSS攻击又称 跨站脚本攻击
定义:攻击者给前端页面植入一段恶意代码,欺骗用户操作发送到服务器,服务器返回到前端,浏览器解析之后能被执行,从而获取用户信息,以及冒充用户向服务器发起请求。
如何防御?
1、把用户端提交的信息中保护特殊字符进行转义,
如:
例如下面这段代码就会被浏览器执行,浏览没办法识别它是一段恶意代码
特殊字符转义
可以看到转义之后,变成了浏览器不能识别的字符串
2、对于链接跳转,如 <a href="xxx" 或 location.href="xxx",要检验其内容,禁止以 javascript: 开头的链接
这段代码在点击a标签时,会弹出弹框。所以我们要做一个禁止判断
3、Content Security Policy CSP防范
3.1、禁止加载外域代码,防止复杂的攻击逻辑。
3.2、禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。
CSP使用方式:
设置响应头Content-Security-Policy和使用meta标签。
响应头:Content-Security-Policy: 指令1 指令值1 指令值2; 指令2 指令值1;
meta 标签:
<metahttp-equiv="Content-Security-Policy"content="指令1 指令值1 指令值2; 指令2 指令值1;">
类型:
1、xss反射型:攻击者构造出特殊的 URL,其中包含恶意代码。
用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
2、xss存储型:攻击者通过植入恶意代码,将恶意代码提交到目标服务器中,当用户打开网站时,服务器将恶意代码同正常代码一起返回给浏览器解析执行