1、什么是XSS?
XSS是crosing-site-script的简写,称为跨域脚本攻击,重点在于脚本。
攻击者想尽方法将可执行代码注入到访问网页中,对访问者进行攻击。
2、常见的XSS攻击
用人将常见的XSS攻击分为以下几种:
1. Reflected XSS(基于反射的XSS攻击)
2. Stored XSS(基于存储的XSS攻击)
3. DOM-based or local XSS(基于DOM或本地的XSS攻击)
知道这么回事就好,这里不深究。。。还是再介绍一下:
**Reflect XSS** 发生原因: 服务端返回脚本,客户端直接解析脚本
如服务端返回,`http://www.test.com/message.php?send=<script>alert(‘foolish!’)</script>!`
这个时候客户端解析send参数时,会执行脚本信息,遭到攻击。
**Stored XSS** 发生原因: 用户提交恶意代码段,未经过滤就存到服务器。其他用户从服务器请求信息时,执行了该代码段被攻击。
常见于留言板,用户恶意提交评论`<script>alert('handsome boy')</script>`,其他用户请求到该评论信息时即被攻击。
3、怎么防范XSS?
首先,以上情况因为对用户输出的信任。
**采取措施一:** **转义字符转义用户输入**
包含< > '' \ 等进行转义
此方法能解决一部分问题,但可能会影响到格式。
**采取措施二:CSP (content security policy)网页安全政策**
维护一个白名单,浏览器只可以加载白名单的资源。
开发者提供配置,如
a) 设置 HTTP Header 中的 Content-Security-Policy
Content-Security-Policy: default-src ‘self’ : 只加载本地资源
Content-Security-Policy: img-src https://* :只加载HTTPS协议图片
。。。
b) 设置 meta 标签的方式 <meta http-equiv="Content-Security-Policy">