《白帽子讲Web安全》第三章笔记
2018-08-02 本文已影响0人
chuaa
跨站脚本攻击
1.1 XSS简介
XSS攻击,英文全称是Cross Site Script,通常指黑客通过“HTML注入”篡改了网页,插入恶意的脚本,从而用户在浏览网页时,控制用户浏览器的一种攻击行为。
1.2 XSS分类
1.2.1 反射型XSS
反射型XSS也叫“非持久型XSS(Non-persistent XSS)”,只是简单地把用户输入的数据“反射给”浏览器。也就是说,黑客往往需要诱使用户点击一个恶意链接,才能攻击成功。
1.2.2 存储型XSS
存储型XSS也叫“持久型XSS(Persistent XSS)”会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。
1.2.3 DOM Based XSS
通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
1.3 XSS攻击进阶
1.3.1 XSS Payload
XSS攻击成功后,攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本,控制用户的浏览器。这些用以完成各种具体功能的恶意脚本,称之为“XSS Payload”。
1.3.2 XSS构造技巧
- 利用字符编码
- 绕过长度限制
- window.name
- 使用base标签
1.4 XSS的防御
1.4.1 HttpOnly
浏览器禁止页面的JavaScript访问带有HttpOnly属性的Cookie。
1.4.2 输入检查
输入检查的逻辑必须放在服务器端代码中实现。如果只是在客户端使用JavaScript进行输入检查,是很容易被攻击者绕过去的。目前Web开发的普遍做法是同时在客户端和服务器端实现相同的输入检查。客户端的输入检查,可以阻挡大部分误操作的正常用户,从而节约服务器资源。
1.4.3 输出检查
一般来说,除了富文本的输出外,在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击。