白帽子讲Web安全——笔记(三 ) XSS

XSS跨站脚本攻击

含义:

通过HTML注入篡改网页,插入恶意脚本

类型

  1. 反射型XSS
    把用户输入反射给浏览器(也叫非持久型XSS)
  2. 存储型XSS
    把用户输入的数据储存在服务器,具有很强稳定性
  3. DOM Based XSS
    从效果来说是反射型,但是形成原因比较特殊,被专门提出

XSS攻击进阶

XSS Payload

含义:在所攻击的页面植入的脚本,称为XSS Payload
用于:

  1. Cookie劫持
  2. 构造POST或者GET请求
    例如表单的自动提交,获取用户邮件列表等
    防止: 提交表单输入验证码, 修改密码输入old password
  3. XSS钓鱼:在页面画出伪造的登陆框,获取用户的用户名及密码
  4. 识别用户浏览器
    读取UserAgent对象,或者用脚本分析浏览器之间细微差异确认浏览器
  5. 识别用户安装的软件/插件:
    • 用户安装某软件,也默认安装某控件,判断该控件是否存在,可判断用户是否安装该软件
    • 一些第三方控件会泄露客户端电脑信息
  6. 通过CSS Payload获取用户的浏览信息
  7. 获取用户的真实ip地址

XSS Worm

  1. Samy Worm
  2. 百度空间蠕虫

XSS构造技巧

  1. 利用字符编码
  2. 绕过长度限制
  3. 使用标签
  4. 通过window.name

XSS防御

  1. HttpOnly:禁止页面JS访问cookie(Trace绕过cookie)
  2. 输入检查
  3. 输出检查
  • 安全编码函数(HtmlEncodes/JavascriptEncode/XMLEncode/JSONEncode)

正确防御XSS

场景

  1. 在HTML属性输出
  2. 在HTML标签输出 ——用HtmlE你code
  3. 在script标签输出
  4. 在事件中输出 ——用JavascriptEncode
  5. 在CSS中输出 ——用EncodeForCss
  6. 在地址中输出 ——URLEncode

处理富文本 ——利用白名单允许标签

防御DOM Based XSS

你可能感兴趣的:(白帽子讲Web安全——笔记(三 ) XSS)