XSS跨站脚本攻击
含义:
通过HTML注入篡改网页,插入恶意脚本
类型
- 反射型XSS
把用户输入反射给浏览器(也叫非持久型XSS) - 存储型XSS
把用户输入的数据储存在服务器,具有很强稳定性 - DOM Based XSS
从效果来说是反射型,但是形成原因比较特殊,被专门提出
XSS攻击进阶
XSS Payload
含义:在所攻击的页面植入的脚本,称为XSS Payload
用于:
- Cookie劫持
- 构造POST或者GET请求
例如表单的自动提交,获取用户邮件列表等
防止: 提交表单输入验证码, 修改密码输入old password - XSS钓鱼:在页面画出伪造的登陆框,获取用户的用户名及密码
- 识别用户浏览器
读取UserAgent对象,或者用脚本分析浏览器之间细微差异确认浏览器 - 识别用户安装的软件/插件:
- 用户安装某软件,也默认安装某控件,判断该控件是否存在,可判断用户是否安装该软件
- 一些第三方控件会泄露客户端电脑信息
- 通过CSS Payload获取用户的浏览信息
- 获取用户的真实ip地址
XSS Worm
- Samy Worm
- 百度空间蠕虫
XSS构造技巧
- 利用字符编码
- 绕过长度限制
- 使用<base>标签
- 通过window.name
XSS防御
- HttpOnly:禁止页面JS访问cookie(Trace绕过cookie)
- 输入检查
- 输出检查
- 安全编码函数(HtmlEncodes/JavascriptEncode/XMLEncode/JSONEncode)
正确防御XSS
场景
- 在HTML属性输出
- 在HTML标签输出 ——用HtmlE你code
- 在script标签输出
- 在事件中输出 ——用JavascriptEncode
- 在CSS中输出 ——用EncodeForCss
- 在地址中输出 ——URLEncode
网友评论