XSS的攻击方式
- 反射型
发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析响应之后,XSS代码随着响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。 - 存储型
存储型XSS和反射型XSS的差别在于,提交的代码会存储在服务器中(例如数据库,内存,文件系统等),下次请求页面是不用再提交XSS代码。
掌握XSS的防御措施
- 编码
对用户输入的数据进行HTML Entity编码
- 过滤
移除用户上传的DOM属性,如onerror等
移除用户上传的Style节点、Script节点、Iframe节点等
- 校正
避免直接对HTML Entity解码
使用DOM Parse转换,校正不配对的DOM标签
实战
通过构建Node(Express)服务和建立一个评论功能,实例演示XSS的攻击及预防。源码gitbub。
网友评论