@1qaz
2015-11-12T13:36:08.000000Z
字数 1685
阅读 993
浏览器:安全性 VS 用户体验
HTTP 会话劫持 Firesheep
中间人HTTP,重定向至http://victim.example.com:443/
inject new cookie,overwrite and delete old cookie
* Cookie Eviction
* Direction Cookie Injection
* Cookie Injection From Related Hostnames
Set-Cookie: SID=31d4d96e407aad42; Domain=www.example.com; Path=/; Secure; HttpOnly
五个可选属性:domain和path指定cookie的适用范围;expires表明过期时间;secure表明只能通过https发送;HTTPOnly阻止浏览器端脚本读
www.example.com
Set-Cookie: JSESSIONID=REAL_ID; Path=/
blog.example.com
XSS on blog.example.com
document.cookie = 'JSESSIONID=FORCED_ID; domain=example.com';
cookie字段可以允许同名的元素
Cookie: JSESSIONID=REAL_ID; JSESSIONID=FORCED_ID
document.cookie = 'JSESSIONID=SECOND_FORCED_ID; domain=example.com; path=/admin';
当浏览/admin和其下的网页时,浏览器提交cookie的顺序
Cookie: JSESSIONID=SECOND_FORCED_ID; JSESSIONID=REAL_ID; JSESSIONID=FORCED_ID
解决方案
1. HSTS:HTTP Strict Transport Security
服务器强制客户端使用HTTPS代替HTTP发起连接;如果证书无效 ,用户不能忽略浏览器警告继续访问
2. 检验cookie完整性:发给一个用户的cookie不会对另一个用户有效
HMAC
TLS Channel ID:认证客户端的身份。客户端用Channel ID
向服务器证明自己拥有某个私钥,token必须在被绑定的channel中传输
将HTTPS降级到HTTP
expired,wrong host,self-signed,mixed,...
为什么会有这么多不合法的证书
* 80端口和443端口是不同的域名
* name coverge 不足 www.example.com example.com
* 自签名证书
* 内网设备的证书:生产商无法确定设备的域名和IP,又不提供用户修改证书的接口
* 过期证书
* 错误的配置
TLS的核心目标是防止中间人攻击,但攻击真正发生的时候浏览器只发出了证书警告,仍要用户自己判断是否被攻击。
浏览器厂商对不合法证书的处理方式:
1. Click-Through Warnings: Chrome,IE,etc,每次都要选择“继续前往”
2. Certificate Exception: 只有FireFox,手动添加某个证书为信任
trust on first use策略(ssh)
用户面对不合法证书:
Firefox 33%用户选择继续
Chrome 70%用户选择继续