十三年专注于网站建设与互联网应用开发,低调、有情怀的网络应用服务商!
南昌百恒科技微信公众号 扫一扫关注
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒科技微信公众号

Web应用中关于cookie的属性及其属性功能介绍

百恒 2017-07-29 16:34:44 4006
       cookie是在浏览器中存储数据的一种简单的机制。cookie存储的数据有时候非常重要。因为cookie有很多用途,既可以存储会话标识符——这样当你访问网站时,网站会记住你是谁;也可以存储会话信息,记住你刚才做过什么事。cookie还包含一个时间范围属性,表示它的有效期,可能是几秒,也可能是未来很长时间。
       cookie可以在浏览器关闭再打开后仍然有效,也可以随着浏览器窗口关闭而被立即删除。cookie由Web应用负责维护,保存在浏览器的本地数据库里,相应的数据由Web应用设置和管理。Web应用请求浏览器为它在一段时间内保存一点数据。当浏览器重新打开相应cookie对应的域时,就会在每一个HTTP请求中附加该cookie一起发送。这样,浏览器就可以识别访问网站的特定用户,从而实现定向广告,以及在用户重新访问同一网站时显示欢迎消息。
       cookie属性用于帮助决定什么时候应该把cookie发送回服务器,以及cookie应该存活多长时间。这种属性的组合用于限制用户对攻击者的暴露程度,同时也确保数据不会保存得比需要的时间还长。正如对开发者来说,理解这些属性对用户与应用交互的影响非常重要,理解它们的功能对我们来说也同样重要。那么cookie具有哪些属性?这些属性又有哪些功能呢?下面南昌网络公司小编就来跟大家探讨一下:
       一、失效时间属性
       失效时间对应的属性是Expires,它帮助浏览器决定保存cookie的时间。cookie的生命周期可以长至浏览器多次重启都有效,也可以短至只要浏览器一关闭就结束。不设置Expires属性就可以实现不在磁盘上保存cookie,而一旦浏览器关闭就销毁cookie数据。这种方法常用于登录会话,以及其他不需要在多次浏览器重启过程中仍然保持的会话。
       对追踪用户而言,会话cookie是理想的选择。如果应用想在用户每次返回应用时都区分识别他们,那么持久cookie更合适。持久cookie会设置一下未来的删除cookie的时间。设置时间可长可短,从几秒钟到比用户存续时间还长都可以。
       了解了cookie的类型,才能更好地攻击用户会话。在窃取会话的时候,cookie的存活时间和会话的超时值(timeout value)决定了你有多长时间可以维持访问。过短的会话超时时间会限制cookie的可用性,即使cookie的生命周期很长也没有用。在攻击Web浏览器的过程中,理解这些细微的差别非常重要。
       二、HttpOnly标签
       HttpOnly标签用于阻止JavaScript及其他脚本语言访问cookie。HttpOnly告诉浏览器只能通过HTTP协议传输cookie,不能在DOM中访问cookie。这样可以防止XSS攻击向外部发送cookie数据,也可以防止渲染HTML代码时修改cookie。下面我们就扩展前面的代码片段,进一步认识这个标签。
       原来的Ruby代码设置了两个带HttpOnly标签的会话cookie,可以通过在DOM中访问cookie来验证这一点。打开Firebug控制台,在命令编辑器中输入document.cookie,然后单击Run。结果就返回一个空值,如下图所示。

通过控制台查看cookie

       如果想实现在DOM中访问cookie,则必须禁用HttpOnly标签。为此,修改setcookie函数的最后一个参数,不让它启用HttpOnly标签。修改后的代码如下:
       class CookieDemo < Sinatra::Base
       get "/" do
       response.set_cookie "session_cookie", {:value => 'yes',
       :domain => 'browserhacker.com',
       :path => '/' }
       response.set_cookie "persistent_cookie", {:value => 'yes',
       :domain => 'browserhacker.com',
       :path => '/', :expires => Time.now + (60 * 60 * 7) }
       "n" + request.cookies.to_json + "nn"
       end
       end
       重新加载页面,再次在Firebug控制台中执行document.cookie,就会看到响应中包含的cookie了,如下图所示。

通过控制台查看未设置HttpOnly标签的cookie

       这里演示了在你能够随意通过浏览器执行JavaScript代码的情况下,如何访问未设置HttpOnly标签的cookie。不过,在不读取HttpOnly cookie的情况下,还是可以利用它们的。
       三、理解安全标签
       假设有一个电子商务应用托管在browserhacker.com上,这个应用需要跟踪购物车,并在用户访问结账页面时对用户进行认证。此时,如果能够通过HTTPS来实现结账功能就更好了。
       Secure这个安全标签就是用于限制只能通过SSL加密的连接发送cookie。设置这个标签不仅能防止不适当地使用cookie,也可以阻止别有用心的人窥探cookie。
       四、理解路径属性
       路径(Path)属性加上域(Domain)标签,用于表示cookie适用的范围。大型的应用通常需要宽泛的域或路径,以便用户能够在站点的多个子域之间跳转。
下面还以我们的电子商务应用browserhacker.com为例。理想的情况是使用两个cookie:一个会话cookie跟踪用户对所有browserhacker.com域的访问,另一个会话cookie跟踪在browserhacker.com中认证后的用户,将其限制于只能访问/checkout路径。通过将cookie限制到特定的路径,再加上使用HttpOnly等安全功能,暴露结账环节私密信息的可能性就会大大降低。
       可惜现实并没有那么美好。只要内容存在XSS利用漏洞,那么就没办法阻止通过打开内嵌的框架向限定的路径注入JavaScript,然后访问相应的cookie。即使子内嵌框架处于SOP保护之下,cookie依旧会曝光。
       关于cookie的属性及其属性功能,南昌网络公司小编就为大家介绍到这里,了解了这些属性后相信开发人员在Web应用中就可以运用自如了。以上cookie方面的内容如果大家还有哪些不明白的地方,大家随时可来电和我们联系。有想了解更多关于网站建设、微信开发、手机APP开发等方面资讯的朋友,欢迎关注百恒网络网站动态,更多精彩内容与您分享!
400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
备案专线 备案专线
 
售后服务 售后服务
 
×