概述
浅谈cookie安全性
摘要
HTTP State Management Mechanism(HTTP状态管理机制)一文中,定义了HTTP Cookie和Set-Cookie头字段。HTTP服务器利用这种头字段,在HTTP用户代理(浏览器)中存储当前状态,使得在大多数无状态的HTTP协议下,服务器可以维持一个有状态的回话。虽然,在安全性和隐私性上,cookie有许多历史性的不合理处,但是cookie和Set-Cookie头字段仍广泛用在网络中。
本文将结合具体案例“qqun_sql_step”讨论cookie在连续会话中的应用,同时,将从私密性和安全性两方面来讨论Cookie的安全特性。分析第三方Cookies,生存周期,明文存储,客户端存储带来的安全问题,着重讨论了几种常见的利用cookie的攻击方式,并在最后对cookie可能存在的每个安全漏洞提出几条建议与注意事项,以降低安全风险。
- 什么是cookie
HTTP State Management Mechanism(HTTP状态管理机制)中定义了HTTP Cookie和Set-Cookie头字段。利用Set-Cookie头字段,HTTP服务器可以向用户代理传输名值对(name/value pair)和关联的元数据(称为cookie)。当用户代理向服务器发送接下来的请求时,用户代理根据元素数据和其他信息来决定是否在Cookie头中返回名值对。一个回话建立过程如图1所示:
图 1 cookie的使用
尽管在表面上很简单,cookie有许多复杂特点。例如,服务器在每个cookie发送至用户代理时,会为其指定范围。这个范围包括,用户代理应当返回cookie的最长时间,用户代理应当返回cookie的服务器,以及cookie实用的URI设计。
基于历史性的原因,cookie包含许多安全和隐私上的不合理处。例如,服务器默认一个提交的cookie是“安全”连接的,但是,在活跃的网络攻击者出现时,并没有安全属性来提供完整性保障。同样的,尽管浏览器通常使用的同源策略(same-origin policy)隔离了不同端口的检索内容,cookie对于其提交主机来说,是在所有端口上共享的。
- cookie在有状态会话中的应用
Cookie通常存储在客户端,针对一个服务器的cookie文件中可能包含的信息有会话标识符(session-id),域,路径,安全属性(true/false)等。
分析QQ群检索项目,两个服务器端脚本如图2,3所示:
图 2-将用户待查询QQ号加入队列
cookie如果为空,则将其内容设置为两个随机数,以此作为会话标识符。对于两个拼接的随机数,有效地避免了重复以及攻击者遍历所有取值地攻击方式,可以保证cookie的唯一性。但是cookie的明文传输特性,该脚本没有对其有任何加密处理,攻击者通过监听即可获取当前cookie值。
最后
以上就是大方饼干为你收集整理的Cookie安全性分析的全部内容,希望文章能够帮你解决Cookie安全性分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复