XSS
跨站脚本,是一种注入式的攻击方式
- 原因 :
对于用户输入没有严格控制而直接输出到页面
对于非预期输入的信任 - 危害:盗取各类用户账号
非法转账
窃取数据… - 分类:
反射型:内容直接读取并且反射展示到页面 ,浏览器 -> 后端 -> 浏览器
eg: http://www.xx.com/search.html?key_pro = ">
存储型:攻击者把攻击脚本上传到服务器,使得数据污染或者所有访问改页面的用户泄密成为可能
浏览器 -> 后端 -> 数据库 -> 后端 -> 浏览器
基于Dom型: 在页面载入后,只有合法的脚本被执行,合法脚本直接利用用户输入生成HTML代码并插入到页面中,由 于恶意代码用过innerHTML插入到页面中,所以他被解析为HTML代码,从而导致恶意脚本被执行。 - 防范:
永远不要相信用户输入的数据
将重要的cookie标记为http only, document.cookie语句就不能获取到cookie了
只允许用户输入我们期望的数据,对输入的数据就行校验
对数据进行Html Encode处理
过滤或者移除特殊的Html标签,
过滤js事件标签,“οnclick=”,"onfocus”等等
涉及DOM渲染的方法传入的字符串参数做escape转义,前端渲染的时候对任何的字段都需要做escape转义编码
escape转义的目的是将一些构成HTML标签元素转义,比如 <, >, 空格等,转义成< >  ;等显示转义字符