Contenu connexe Similaire à HTTP协议相关的若干安全问题 Similaire à HTTP协议相关的若干安全问题 (19) HTTP协议相关的若干安全问题8. 不讲什么
DDoS 和 DoS: 前者耍流氓, 后者耍无赖
软件漏洞: 紧盯 CVE 和发行版的安全通告
XSS: 其实这个才是大头
SQL Inject: 这都2013年了, 你要反省
HTTP Cache: 细节太多,还算安全
社会工程学: 确实不懂
Tuesday, May 14, 13
11. HTTP 协议范例
$ curl -v http://www.google.com.hk/
> GET / HTTP/1.1
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
> Host: www.google.com.hk
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Wed, 24 Apr 2013 13:15:02 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=Big5
< Set-Cookie: PREF=ID=5dee4c0efb2fd080:FF=0:NW=1:TM=136680[snip]
< Set-Cookie: NID=67=DyKygko82Qz6Xxjed6pZEZvekjy6YFHRAEh[snip]
< Server: gws
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Transfer-Encoding: chunked
<
<!doctype html><html><head>...</head><body>...</body></html>
Tuesday, May 14, 13
13. CSRF 是什么?
Cross-site request forgery (跨站请求伪造)
用户期望一个行为(比如转账,投票,关闭
bug, ...)是在对应的网站上发生,但在访问一
个不相关的网站时却触发了该行为
比如我在逛煎蛋,看看无聊图,结果触发了我
在 17startup 上给某个网站投了5星
Tuesday, May 14, 13
15. GET 型 CSRF
17startup 的投票请求: http://17startup.com/
startup/vote/9439/5
攻击手法1: 直接发送url给受害人,如果受害
人已经登录 17startup 并且点击了 url, 就能
帮你完成投票
Tuesday, May 14, 13
17. 防御 GET 型 CSRF
凡是需要更改服务器状态的请求,不得使用
GET, 可以使用 POST, PUT, DELETE
Tuesday, May 14, 13
18. 技术时间: Request Method
安全 幂等
HEAD √ √
GET √ √
POST × ×
PUT × √
DELETE × √
PATCH × ×
TRACE, OPTIONS, CONNECT (TRACK, DEBUG)
Tuesday, May 14, 13
26. 技术时间: Session 保存问题
优点 缺点
Cookie
Session
降低服务端压力和复杂性
数据泄露, 大小限制, 浪费流
量,无法强制登出
Memcache
Session
不依赖于数据库
用户修改密码后登出用户麻
烦,清理 cache 时会导致用
户登出
Database
Session
功能强大 消耗数据库资源
Tuesday, May 14, 13
27. Session 劫持防御
Session Id 永远不要出现在 HTML 中
Session Id 的 Cookie 永远要 HttpOnly
记录浏览器很少变化的 HTTP 头
User Agent
Accept Encoding
Accept Language
IP(?)
Tuesday, May 14, 13
29. SSL的历史
SSL 1.0, Netscape 开发,未公开
SSL 2.0, 1995年2月
SSL 3.0, 1996年
TLS 1.0(RFC2246) ≈ SSL 3.0, 1999年
TLS 1.1(RFC 4346), 2006年4月
TLS 1.2(RFC 5246, 6176), 2008年8月
Tuesday, May 14, 13
30. SSL 支持情况
[禁用] SSL 2.0, 1995年2月
[OK] SSL 3.0, 1996年
[OK] TLS 1.0(RFC2246) ≈ SSL 3.0, 1999年
[不支持] TLS 1.1(RFC 4346), 2006年4月
[不支持] TLS 1.2(RFC 5246, 6176), 2008年8月
Tuesday, May 14, 13
31. SSL 2.0 存在的问题
1. 长度扩展攻击(Length extension attack)
MAC = MD5(secret + content)
MAC2 = MD5(secret + content+
attack_suffix)
Tuesday, May 14, 13
32. SSL 2.0 存在的问题
1. 长度扩展攻击(Length extension attack)
2. 安全降级攻击
使用明文协商通信模式,中间可以篡改通信
降低加密级别
Tuesday, May 14, 13
33. SSL 2.0 存在的问题
1. 长度扩展攻击(Length extension attack)
2. 安全降级攻击
3. TCP 关闭攻击
SSL 使用 TCP FIN 来结束,中间人可以通过
发送 TCP FIN 来干扰 SSL 连接(且客户端不
会意识到被攻击)
Tuesday, May 14, 13
37. SSL 3.0 / TLS 1.0 的风险
BEAST 攻击: 利用 CBC(Cipher-block chaining)
的一个缺陷
CRIME 攻击: 构造碰撞并观察压缩率
RC4 攻击: 长时间使用同一个 key 导致被攻击
Tuesday, May 14, 13
38. CRIME 攻击
假定你的 session id 为 a1b2c3d4
那么如果请求参数含有 a1b 或者 1b2 或者
b2c 时,整个请求的压缩率可以提高(SSL 或
者 SPDY 会启用压缩)
用 sniffer 监听每个请求的长度,找到压缩
率偏高的包,在根据片段重新拼凑出 cookie
Tuesday, May 14, 13
39. Same Origin Policy 与 跨
域通信
Same Origin Policy 对不同域限制:
frame 之间不能互相访问
发起的 GET 请求无法获取内容
无法发起 POST 型 AJAX 请求(但可以直接
POST FORM)
无法使用字体/Flash/Java Applet
。。。
Tuesday, May 14, 13
43. HTTP Headers
Cookie
HttpOnly: 避免 session id 被窃
Secure: 避免 session id 被窃听
Strict-Transport-Security: max-age=16070400;
includeSubDomains
Clickjacking
X-Frame-Options: deny
X-Frame-Options: sameorigin
Tuesday, May 14, 13