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
分享到:
相关推荐
**标题解析:**“mvc中cookie安全”这个标题聚焦于在使用Model-View-Controller (MVC)架构的Web应用程序中处理Cookie的安全性问题。在Web开发中,Cookie常用于存储用户状态信息,如会话ID,但如果不妥善管理,可能会...
史上最全如何安全的处理cookie,不让cookie被利用最全如何安全的处理cookie,
另一种常见的方法是使用Session,但相比Cookie,它在服务器端存储用户信息,减少了安全风险。然而,Session需要服务器维护每个用户的会话状态,可能导致资源消耗较大。为了兼顾安全和效率,可以使用JWT(JSON Web ...
在IT领域,尤其是在Web开发中,Cookie的管理与安全至关重要。C#作为一种广泛使用的编程语言,在处理Cookie方面提供了丰富的功能,包括对Cookie的加密与解密。本文将深入探讨如何在C#中操作Cookie,以及如何实现...
【Cookie安全策略】是确保Cookie安全的重要手段,包括设置各种属性如Domain、Path、Secure、Expires、MaxAge和HttpOnly。HttpOnly属性可以防止JavaScript访问Cookie,从而减少Cookie被篡改或窃取的风险。然而,尽管...
桂林老兵Cookie欺骗工具是一款在IT安全领域中被广泛讨论...总的来说,桂林老兵Cookie欺骗工具为网络安全专业人员提供了一个实验和学习Cookie欺骗技术的平台,但使用时应谨慎,合理运用这些知识来提升网络环境的安全性。
总结来说,“使用Cookie记录用户名和密码”是Web开发中的一种常见实践,涉及了Cookie的工作原理、安全存储策略以及防止XSS和CSRF攻击的方法。开发者需要理解这些概念,以确保用户信息的安全,并提供良好的用户体验。...
### Java Cookie 的使用详解 #### 一、Cookie简介 在Java Web开发中,Cookie是一种用于在客户端存储数据的技术。它通常被用来跟踪用户状态或存储用户的...当然,正确地使用Cookie还需要考虑到安全性、性能等因素。
本文将深入探讨这个主题,主要围绕"原生登录cookie保持提供webview使用"这一核心知识点进行展开。 首先,我们需要理解cookie的工作原理。Cookie是服务器在客户端存储的小型文本文件,通常用于跟踪用户会话、存储...
- Cookie篡改:恶意用户可能会尝试获取和修改他人的Cookie,实现冒充身份的目的,因此使用Cookie浏览器时应警惕网络安全。 - Cookie盗窃:网络钓鱼和恶意软件可能会窃取用户的Cookie,导致账户被盗。 - 隐私泄露...
**JavaScript Cookie 使用详解** 在Web开发中,JavaScript的全局变量在不同页面间通常是无法共享的,但是有一种机制——Cookie,可以实现跨页面的全局数据存储。Cookie是由浏览器提供的功能,它允许JavaScript通过`...
### Cookie的使用方法与实例详解 #### 一、Cookie简介 在Web开发中,Cookie是一种常用的客户端存储技术,用于在用户的浏览器中存储少量的数据。这些数据可以被网站用来跟踪用户的状态,例如记住用户的登录信息或者...
因此,在处理敏感信息时,应当谨慎使用Cookie,并采取相应的安全措施。 2. **隐私保护**:随着法律法规对数据隐私的要求日益严格,开发者需要确保对用户数据的处理符合相关法规要求。 3. **兼容性问题**:不同的...
使用`expirationDateObj.toGMTString()`方法设置Cookie的失效日期,`expirationDateObj`是一个包含日期的对象,转换为GMT格式。若不设置,Cookie会在浏览器关闭后失效。 7. **删除Cookie** JavaScript无法直接...
因此,应避免在Cookie中存储敏感信息,使用HTTPS协议确保通信安全,并定期更新Cookie的值以防止会话固定攻击。 总结,本示例通过Servlet和Cookie展示了如何在Java Web应用中实现用户登录信息的持久化,以实现自动...
### 关于Java应用Cookie知识点详解 #### 一、Cookie简介 ...通过以上介绍,我们可以了解到Java中Cookie的基本使用方法以及相关的安全性和注意事项。这些知识点对于开发基于Java的Web应用程序非常重要。
广告商和数据分析公司经常使用Cookie来追踪用户的网络行为,以提供个性化广告或分析用户兴趣。这种跟踪可能涉及跨站点追踪,即一个网站的Cookie可以在用户访问其他关联网站时被读取。 #### 4. 存储购物车信息 在线...
### Cookie、Session与Token的区别及使用详解 #### 一、Cookie **定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),...