`
xmong
  • 浏览: 258763 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

cookie使用安全

阅读更多
Cookie使用安全


目录
1 COOKIE简介 1
1.1 什么是COOKIE 1
1.2 COOKIE可以做什么 1
1.3 COOKIE的限制 1
2 COOKIE常用属性 2
2.1 COOKIE常用属性 2
3 COOKIE安全设置 2
3.1 COOKIE加密 3
3.2 COOKIE域(DOMAIN)与路径(PATH)设置 3
3.3 COOKIE的HTTPONLY和SECURE设置 4



1 Cookie简介
1.1 什么是Cookie
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
什么是Cookies(“小甜饼”)呢?简单来说,Cookies就是服务器暂存放在你的电脑里的资料(.txt格式的文本文件),好让服务器用来辨认你的计算机。Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。

1.2 Cookie可以做什么
cookies有什么作用呢?现在上许多网站都用新用户注册这一项,有时注册了一下,等到下次再访问该站点时,会自动识别到你,并且向你问好,是不是觉得 很亲切?当然这种作用只是表面现象,更重要的是,网站可以利用cookies跟踪统计用户访问该网站的习惯,比如什么时间访问,访问了哪些页面,在每个网 页的停留时间等。利用这些信息,一方面是可以为用户提供个性化的服务,
另一方面,也可以作为了解所有用户行为的工具,对于网站经营策略的改进有一定参考价值。例如,你在某家航空公司站点查阅航班时刻表,该网站可能就创建了包含你旅行计划的Cookies,也可能它只记录了你在该站点上曾经访问过的Web 页,在你下次访问时,网站根据你的情况对显示的内容进行调整,将你所感兴趣的内容放在前列。这是高级的Cookie应用。目前Cookies 最广泛的是记录用户登录信息,这样下次访问时可以不需要输入自己的用户名、密码了——当然这种方便也存在用户信息泄密的问题,尤其在多个用户共用一台电脑 时很容易出现这样的问题。

1.3 Cookie的限制
Cookie只是一段文本,所以它只能保存字符串。而且浏览器对它有大小限制以及 它会随着每次请求被发送到服务器,所以应该保证它不要太大,大多数浏览器支持最大为 4kC。由于这限制了 Cookie 的大小,最好用 Cookie 来存储少量数据,或者存储用户 ID 之类的标识符。
浏览器还限制站点可以在用户计算机上存储的 Cookie 的数量。大多数浏览器只允许每个域存储 20 个 Cookie;大多数浏览器还会对它们将接受的来自所有站点的 Cookie 总数作出绝对限制,通常为 300 个。如果试图存储更多 Cookie,则最旧的 Cookie 便会被丢弃。

2 Cookie常用属性
2.1 Cookie常用属性
一个Cookie包含以下信息:
• Cookie名称,Cookie名称必须使用只能用在URL中的字符,一般用字母及数字,不能包含特殊字符,如有特殊字符想要转码。如js操作cookie的时候可以使用escape()对名称转码。
• Cookie值,Cookie值同理Cookie的名称,可以进行转码和加密。
• Expires,过期日期,一个GMT格式的时间,当过了这个日期之后,浏览器就会将这个Cookie删除掉,当不设置这个的时候,Cookie在浏览器关闭后消失。
• Path,一个路径,在这个路径下面的页面才可以访问该Cookie,一般设为“/”,以表示同一个站点的所有页面都可以访问这个Cookie。
• Domain,子域,指定在该子域下才可以访问Cookie,例如要让Cookie在a.test.com下可以访问,但在b.test.com下不能访问,则可将domain设置成a.test.com。如果没有设置cookie的domain值,该属性的默认值就是创建cookie的网页所在的服务器的主机名。注意,不能将一个cookie的域设置成服务器所在的域之外的域。
• Secure,安全性,指定Cookie是否只能通过https协议访问,一般的Cookie使用HTTP协议既可访问,如果设置了Secure(没有值),则只有当使用https协议连接时cookie才可以被页面访问。
• HttpOnly,如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息。

3 Cookie安全设置
在实际的应用场景中,Cookie被用来做得最多的一件事是保持身份认证的服务端状态。这种保持可能是基于会话(Session)的,也有可能是持 久性的。不管哪一种,身份认证Cookie中包含的服务端票据(Ticket)一旦泄露,那么服务端将很难区分带有此票据的用户请求是来自于真实的用户, 或者是来自恶意的攻击者。在实际案例中,造成Cookie泄露最多的途径,是通过跨站脚本(XSS, Cross Site Script)漏洞。攻击者可以通过一小段JavaScript代码,偷窃到代表用户身份的重要的Cookie标示。由于跨站脚本漏洞是如此的普遍(不要 以为简单的HTML Encode就可以避免被跨站,跨站是一门很深的学问,以至于在业界衍生出一个专用的名词:跨站师),几乎每一个网站都无法避免,所以这种方式是实际攻防中被普遍使用的一种手段。如CSRF(跨站请求伪造)攻击和XSS(跨站脚本)攻击都可能利用Cookie来攻击我们的网站。
了解CSRF和XSS攻击可以访问下面地址
CSRF跨域请求伪造攻击:http://xmong.iteye.com/blog/1564261
XSS跨站攻击:http://xmong.iteye.com/blog/1565910

Cookie往往会成为黑客攻击web应用的切入点,所以我们在使用cookie的时候一定要谨慎小心。下面是使用cookie时候的一些安全考虑。
1. 使用cookie存储信息是明文存储吗,有没有对存储信息加密存储?怎样加密和解密策略?
2. 怎样设置cookie的domain(域)和path(路径),有什么策略?特别是有多个web应用的时候?
3. 怎样操作cookie,是使用js(前端)还是使用java(后台)操作cookie?如果有js操作cookie,这是必须的吗,如果没有,js能访问cookie吗?
4. 在有SSL的应用中,你的Cookie是否可以在HTTP请求和HTTPS请求中通用?

3.1 Cookie加密
加密的方法很多,使用比较复杂的加密算法,安全性比较高些,但占用服务器资源比较大,会减慢整个网站的访问速度。
所以对Cookie加密在考虑三个方面:
1:安全性,2:Cookie容量,3:整个网站的性能

3.2 Cookie域(domain)与路径(path)设置
domain表示的是cookie所在的域,默认为请求的地址,如网址为www.test.com/test/test.jsp,那么domain默认为www.test.com。而跨域访问,如域A为t1.test.com,域B为t2.test.com,那么在域A生产一个令域A和域B都能访问的 cookie,就要将该cookie的domain设置为test.com;如果要在域A生产一个令域A不能访问而域B能访问的cookie就要将该 cookie的domain设置为t2.test.com。
path表示的是cookie所在的目录,默认为/,就是根目录。在同一个服务器上有目录如下:/test/,/test/t1/,/test /t2/,现设一个cookie的path为/test,那么在请求 /test/,/test/t1/,/test /t2/ 时,都能访问cookie,如果将cookie的path设置为/test/t1,在请求/test/,/test/t1/,/test /t2/ 时,只有/test/t1/能访问到cookie。

Cookie在设置域(domain)和路径(path)时,有一个原则:最小授权原则。

浏览器在选择发送哪些本地Cookie到本次请求的服务端时,有一系列的比较和甄别。这些甄别中最重要的部分是Domain和Path的吻合。 Domain形如test.com的Cookie,会被发送给所有test.com在80端口上的子域请求。但是反之则不行,这就是Cookie的域匹配 (domain match)原则。
在一个大型Web站点中,往往有多个应用,生存在不同的子域名或路径下。这些应用之间由于共享同一个域名,所以往往可能会彼此有操作对方应用 Cookie的能力。这种情况下,设计好Cookie的Domain和Path尤为重要。在实际设计工作中,最重要的一个安全原则就是:最小化授权。这意 味着,你需要将自己的Cookie可被访问到的范围降至最低。应用之间传递数据和共享信息的解决方案非常多,而通过Cookie这种用户输入(User input)来共享数据,是最不安全的解决方案之一。

3.3 Cookie的HttpOnly和secure设置
(1)HttpOnly属性
如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。
(2)secure属性
当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被盗取到Cookie 的具体内容。
对于以上两个属性,
secure属性是防止信息在传递的过程中被监听捕获后信息泄漏。
HttpOnly属性的目的是防止程序获取cookie后进行攻击。
对于HttpOnly属性Tomcat6,GlassFish2.x只支持的是servlet2.5,而servlet2.5不支持Session Cookie的"HttpOnly"属性。Tomcat7,GlashFish3.0(支持 servlet3.0)默认开启Session Cookie的HttpOnly属性。



******************************

未完待续
参考:
cookie安全漫谈
js操作cookie




分享到:
评论

相关推荐

    Cookie隐私安全是什么电脑安全教程

    Cookie隐私安全是什么电脑安全教程

    最全如何安全的处理cookie,不让cookie被利用

    史上最全如何安全的处理cookie,不让cookie被利用最全如何安全的处理cookie,

    Web应用安全:Cookie参数越权.pptx

    如果有的话,会读取Cookie中的内容,来判断使用者,并送出相应的网页内容,比如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。 Cookie参数越权 2、什么是Cookie 简单的说就是: (1) Cookie是以...

    Cookie安全测试

    Cookie安全测试.pdf

    Web应用安全:HTTPCookie的缺点.pptx

    Web 应用中广泛使用 Cookie 来进行会话管理,而如果 Cookie 的使用方法不当就会滋生安全隐患。与 Cookie 相关的安全隐患大致可分为以下两类。 1)Cookie 的用途不当 2)Cookie 的输出方法不当 Cookie的使用不当 Web...

    mvc中cookie安全

    在mvc中验证如何存取cookie,并通过cookie的httponly属性防止cookie被jquery脚本窃取。

    Session Cookie的HttpOnly和secure属性

    当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。...

    正确处理浏览器的甜点——Cookie保证上网安全

    Cookie是利用了网页代码中的HTTP头信息进行传递的,浏览器的每一次网页请求,都可以伴随Cookie传递。服务器将Cookie添加到网页的HTTP头信息中,伴随网页数据传回到你的浏览器,浏览器会根据你电脑中的Cookie设置选择...

    同源策略以及cookie安全策略

    跨站点请求伪造(Cross—Site Request Forgery).以下简称CSRF。是一种广泛存在的网站漏洞。...2009年3月著名网络安全机构SANS与MITRE结合来自全球超过30个软件工作者及安全专家,将CSRF列为最危险的25个编程错误之一。

    HTTP cookie.doc

    HTTP cookie.doc

    Cookie机制和Session机制

    详细的介绍了cookie和session的区别。

    深入分析Cookie的安全性问题

    Cookie的目的是为用户带来方便,为网站带来增值,一般情况下不会造成严重的安全威胁。Cookie文件不能作为代码执行,也不会传送病毒,它为用户所专有并只能由创建它的服务器来读取。另外,浏览器一般只允许存放300个...

    python中requests模拟登录的三种方式(携带cookie/session进行请求网站)

    cookie是不安全的,且有失效时间 session是在cookie的基础上,服务端设置session时会向浏览器发送设置一个设置cookie的请求,这个cookie包括session的id当访问服务端时带上这个session_id就可以获取到用户保存在...

    cookie设置httpOnly和secure属性实现及问题

    该文档整合了cookie的httponly和secure的简介,已经设置该属性时会遇到的问题,以及设置属性的方式

    PHP通过COOKIE快速阻止用户访问插件.rar

    出于网站安全考虑,如果根据自身网站服务器的安全规则判定当前用户为恶意攻击行为的话,可以使用此插件快速阻止该用户访问,并于$expire cookie时间之后解除阻止。 3.使用方法: 实例化BlockUserByCookie.class类...

    php用户登录之cookie信息安全分析

    主要介绍了php用户登录之cookie信息安全,介绍了cookie加密与令牌保护两种cookie信息安全保护的技巧,需要的朋友可以参考下

    了解Cookie txt格式文件

    全面了解 Cookie的传递流程、编程实现及安全问题 编者按:Cookie在英文中是小甜品的意思,而这个词我们总能在浏览器中看到,食品怎么会跟浏览器扯上关系呢?在你浏览以前登陆过的网站时可能会在网页中出现:你好XX...

    用ASP.NET加密Cookie数据

    Cookie确实在WEB应用方面为访问者和编程者都提供了方便,然而从安全方面考虑是有问题的,首先,Cookie数据包含在HTTP请求和响应的包头里透明地传递,也就是说聪明的人是能清清楚楚看到这些数据的  。其次,Cookie...

    JAVA中cookie用法

    ** 处理cookies 类型 方法名 方法解释 String getComment() 返回cookie中注释,如果没有注释的话将返回...boolean getSecure() 如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。

    JavaWeb 中Cookie实现记住密码的功能示例

    cookie是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。Cookie的目的就是为用户带来方便,为网站带来增值。这篇文章主要介绍了JavaWeb 中Cookie实现记住密码的功能示例,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics