Web安全攻防系列[2]-防范XSS
概要
XSS 是代码注入的一种,他注入的目标是前端页面,所以他是前端工程师关注的安全重点。黑客可能由此作为跳板,进而进行网络钓鱼欺诈甚至入侵核心系统。
XSS 萌芽于上世纪 90 年代中期,正名于 1999 年,流行于 2005 年之后。
同源策略
同源策略是由 Netscape 提出的著名安全策略,是浏览器最核心、最基本的安全功能。同源是指的端口、域名、协议都要相同。
XSS 的分类
- Persistent 持久型
- Non-Persistent 反射型
- Dom-Based 类型。注入的代码直接在本地触发,不会传到服务器。
攻击方法
- Xss 盲打。因为注入代码之前并不知道网站到底有没有 XSS 漏洞,故一般认为网站存在漏洞,然后通过注入代码来检测
防范要点
- 服务端对于用户提交的数据,一定要进行 HTML 编码再保存,确保
<,>
这样的 HTML 特殊字符被转义。 - 页面渲染返回前端后,前端为了以防万一,可以在页面 ready 后抢先执行一段 js,去检测用户内容区域(例如帖子内容区)有没有特殊
<script>
这样的标签,如果有则给它转义或剔除掉,防止其执行。 (ps: 这做不到吧,因为如果 js 放到 head 里执行,dom 还没加载完,如果放到末尾执行,则人家内容区域的 js 已经执行了..) - 对 ajax 异步提交的数据,都进行一下 encodeURIComponent 编码转义(这里原因是啥呢,你就算转义了,webserver 也会给重新解码成提交的字符的啊)