本文地址:http://www.jianshu.com/p/486b3a10efb2
第三章 前端黑客之XSS
XSS类型
XSS有三类:反射性XSS(也叫非持久型XSS)、存储型XSS(也叫持久型XSS)和 DOM XSS
- 反射性XSS
发出请求时,XSS代码出现在URL中,作为输入提交到服务端,服务端解析后响应,然后XSS出现在响应,然后浏览器解析执行。
// 构造url http://foo.com/reflect.php?x=<script>alert(1)</script>
// 还可以构造base64加密方式
x=data:text/html;base64,PHNjcmlwdD5hbGVydCgnRVZBTCEhIScpPC9zY3JpcHQ+
- 存储型XSS
提交数据会存储在服务端,比较隐蔽
常见输入点
- document.URL
- document.URLRnencoded
- document.location(及location其他属性)
- document.referrer
- window.location
- window.name
- xhr(请求相关数据)
- document.cookie
- 表单值
常见输出点
直接输出HTML内容
- document.write()
- document.writeln()
- document.body.innerHtml=...
修改DOMshu树及事件
- document.forms[0].action= ...
- document.attachEvent()
- document.create()
- document.execCommand()
- document.body
- window.attachEvent()
替换document URL
- document.location=...
- document.location.hostname=...
- document.location.replace
- document.location.assign()
- document.URL=...
- window.navigator...
打开或修改窗口
- document.open
- window.open
- window.location.href=...
直接执行脚本
- eval
- setInterval
- setTimeout
第四章 前端黑客之CSRF
全称 Cross Site Request Forgery(跨站请求伪造)
伪造请求
伪造GET
正常网站 a.com,恶意网站 b.com,在b站通过创建
img
、script
、link
等标签,诱惑用户访问b站,就跨站发送GET请求
注意:
- 如果用户在a.com中是登陆的,在跨站请求时也会带上cookie等相关信息,请求头只有 referer 不同。
- 本地Cookie与内存Cookie在这种CSRF攻击中对于IE浏览器有些不同,其不允许a网站的本地Cookie在跨域中带上,除非在HTTP响应中设置P3P(Platform for Privacy Preferences)。非IE没有这个限制
伪造POST
通过在恶意网站创建
form
添加 form的method为post,可以做到伪造POST请求,其他请求也类似
攻击类型
按攻击方式分为:HTML CSRF攻击、JSON HiJacking攻击和Falsh CSRF攻击
HTML CSRF攻击
- HTML
通过设置 src/href 等地址都可以发起GET请求
<link href=''>
<img src=''>
<img lowsrc=''>
<img dynsrc=''>
<meta http-equiv='refresh' content="0; url=''">
<iframe src=''>
<frame src=''>
<script src=''></script>
<bgsound src=''>
<embed src=''>
<video src=''>
<audio src=''>
<a src=''></a>
<table background=''></table>
// ...
- CSS
@import ''
background:url('')
对于POST请求只能通过 form 形式
JSON HiJacking
对AJAX响应中最常见的JSON数据类型进行劫持攻击。尤其是JSONP形式url中的callback
Falsh CSRF攻击
第五章 前端黑客之界面操作劫持
界面操作劫持分为三种
点击劫持(Clickjacking),拖动劫持(Drag & Drop jacking),触屏劫持(Tapjacking)
- 在浏览器中,拖放操作是不受“同源策略”限制的,拖动这些链接的过程中可能会有
session key
、token
等
劫持原理
透明层+iframe
-
拖放通过dataTransfer对象(有个getData(), setData()方法)
-
拖放函数有:
- 鼠标拖动一个鼠标时:
ondrag
,ondragstart
,ondragend
- 将对象拖动到一个有效的目标时,目标对象会触发:
ondragenter
,ondragover
,ondragleave
,ondrop
- 鼠标拖动一个鼠标时:
-
很多浏览器,尤其是移动端,可以滑动跨域
附原书购买地址: http://item.jd.com/11181832.html
网友评论