Web应用中的Cookie测试方法研究

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:sujinquan
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:在Web应用程序中,Cookie应用十分广泛,且给用户带来了极大的便利,然而,由于Cookie中所包含信息的敏感性,极易被不法人员利用而造成巨大损失,因此,如何对Cookie进行有效的测试就成为用户上网安全的重要保障。本文对Cookie的概念、作用和调用过程进行了分析,并Cookie机制存在的问题进行了讨论,在此基础上提出了Cookie测试的概念,并对Cookie测试的测试点进行了分析,进而采用测试工具进行测试法、屏蔽测试法、有选择性拒绝测试法、篡改测试法实现了对Cookie的初步测试。测试结果表明,本文所提出的方法在实现Cookie测试方面具有较好的效果。
  关键词:Cookie测试;测试点;Cookie测试方法
  中图分类号:TP311.52
  Cookie技术由网景公司(Netscape)员工Lou Montulli于1993年发明。随后World Wide Web(WWW)协会支持并采纳了Cookie标准,微软也在Internet Explorer浏览器中使用了Cookie。现在,绝大多数浏览器都支持Cookie,几乎所有的网站设计者都使用了Cookie技术。随着cookie技术的普及,cookie技术使得浏览网页更加容易,但cookie技术的滥用也给用户信息造成了极大的威胁。因此,如何对Cookie进行有效的测试是就成为用户上网安全的重要保证。本文提出了4种Cookie测试方法:测试工具测试法、屏蔽测试法、有选择性拒绝测试法、篡改测试法对Cookie进行全面的测试,实验表明,以上方法能够有效实现对Cookie的全面测试,保证Cookie使用安全。
  1 Cookie概述
  1.1 Cookie的概念及作用
  Cookie是Web服务器保存在用户硬盘上的一段文本,它允许一个Web站点在用户的电脑上保存信息并且随后再取回,信息的片断以“名/值”(Name/Value)对的形式储存,用户在浏览网页时,服务器发送给浏览器的体积很小的纯文本信息,它保存在客户机的内存或客户机的硬盘中,用户以后访问同一个Web服务器时,浏览器会把它们原样发送给服务器。通过让服务器读取它原先保存到客户端的信息,网站能够为浏览者提供一系列方便[1],例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入用户名和密码、门户网站的主页定制、有针对性地投放广告等。目前Cookie技术已广泛用于Web应用中。
  1.2 Cookie的组成
  Netscape公司规定的Cookie格式为:Name=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE。它由变量名和及其对应值两部分组成,Name即为Cookie的名称,VALUE为其值,Expires是cookie的生存期,PATH标识URL路径,Domain为域名[2]。
  (1)Name=VALUE:是Cookie必备部分,Name代表其名称,VALUE为其赋值。
  (2)Expires=DATE:Expires变量标识出Cookie生存期,可以缺省,其书写格式为:星期几,DD-MM-YY HH:MM:SS GMT(GMT表示這是格林尼治时间)。
  (3)Domain=DOMAIN_NAME:Domain标识出Cookie的主机名或域名,通过该参数可以指定Internet域中可读取浏览器所存取的Cookie的Web服务器,即只有来自这个域的页面才可以使用Cookie中的信息。该参数若缺省时,设置Cookie的属性值为该Web服务器的域名。
  (4)Path=PATH:Path定义了Web服务器上哪些路径下的页面可获取服务器设置的Cookie。若Path值为“/”,则Web服务器上所有的WWW资源均可读取该Cookie。该项若缺省,Path的属性值表示由Web服务器传给浏览器的资源的路径名。
  (5)Secure:若Cookie中含有该变量,则说明浏览器和Web Server之间的通信协议为加密认证协议(HTTPS)时,浏览器才可以向服务器提交相应的Cookie。
  1.3 Cookie的调用过程
  图1 使用cookie实现单点登录
  图1所示Cookie实现单点登录的步骤如下:
  (1)单点登录客户端产生Web应用,向单点登录服务器请求访问和使用受保护的应用。
  (2)单点登录服务器分析客户端请求,首先检查这个客户端是否已经拥有创建好的有效Cookie。
  (3)若没有有效的Cookie,单点登录客户端则将Web应用请求重定向至单点登录服务器,用户输入相应信息(如用户名和密码等),然后经过LDAP服务器认证,将会产生本次客户端Web访问相关的Cookie。
  (4)当另一单点登录客户端再次产生该Web应用时,单点登录服务器首先会检测与该应用相关的Cookie,然后将该Cookie在LDAP服务器中进行验证;若验证无误,则通过某种授权机制将Cookie返还给Web应用,则单点登录客户端就可访问到个性化的Web服务(如不需要输入用户名和密码,直接访问等)。
  2 Cookie机制存在的问题
  由于Cookie是保存在客户端或者应用服务器上的用户信息,而网络的不安全性注定了Cookie机制的不安全性,虽然Cookie采用了相应的加密机制,但仍不可避免地造成用户相关信息的泄漏,如用户登录网站时的用户名、密码、用户登录网站时的使用习惯等,一旦被不发分子利用,将给用户安全带来巨大危害[3]。
  3 Cookie测试方法研究
  3.1 Cookie测试点
  既然要对Cookie进行测试,那么首先我们要找到Cookie的测试点是什么,然后方可进行测试,所谓测试点指所具备的即功能项、性能指标等,本文认为Cookie测试的测试点主要有:数据完整性(参数完整性)、数据校验(输入更改,页面显示效果)、生存期正常与否(是否可以达到预期保留时间)、可用性(是否可以正常工作)等几个方面。   3.2 Cookie测试方法
  3.2.1 通过已有测试工具进行测试
  常用的Cookie测试工具有:Cookie Editor、IECookieView、Cookies Manager、MyCookie等,本文以Cookie Editor为例完成对Cookie的测试[4]。
  如图所示,通过Cookie Editor1.9可以轻松的查看电脑中所有存储的Cookie的Name、value、created date、expiration、last modified date等信息,亦可通过Look for进行精确查询相应Cookie是否存在泄密或者超时等问题。通过该软件业可以轻松实现对存储的Cookie的测试。
  3.2.2 屏蔽Cookie测试法
  将IE浏览器Internet选项中的隐私设置为“阻止所有Cookie”,然后再次通过IE浏览器进行网页访问,若出现提示:需用户激活Cookie设置才能使用时,说明该浏览器对Cookie是禁用的,需用户手动启用cookie方能正常使用浏览器。
  Public partial class_Default:System.Web.UI.Page
  {
  Protected void Page_load(Object sender,EventArgs e)
  {
  System.Web.HttpBrowserCapabilities myBrowserCaps=Request.Browser;
  if(((System.Web.Configuration.HttpCapabilitiesBase)myBrowserCaps).Cookies)
  {
  this.Title="浏览器支持Cookie。";//判断浏览器是否支持Cookie
  if(!Page.IsPostBack)
  {
  if(Request.QueryString["AcceptsCookies"]==null)//判断浏览器是否禁用了Cookie
  {
  HttpCookie TestCookie=new HttpCookie("TestCookie");
  Reponse.Cookie["TestCookie"].Value="OK";
  Reponse.Cookie["TestCookie"].Expires=DateTime.Now.AddMinutes(1);
  Reponse.Cookie["TestCookie"].Add(TestCookie);
  Reponse.Redirect("TestForCookie.aspx?redirect="+Server.UrlEncode(Request.Url.ToString().Replace("localhost","127.0.0.1")));
  }
  else
  {this.Title="Accept cookies="+Server.UrlEncode(Request.QueryString["AcceptsCookies"]);}
  }
  }
  else
  {this.Title="浏览器不支持Cookies。";}
  }
  }
  Public partial class TestForCookies:System.Web.UI.Page
  {
  Protected void Page_Load(Object sender,EventArgs e)
  {
  string redirect=Request.QueryString["redirect"];
  string acceptsCookies;
  if(Request.Cookies["TestCookie"]==null)
  {acceptsCookies="NO";}
  else
  {acceptsCookies="YES";Response.Cookies["TestCookie"].Expires=DateTime.Now.AddDays(-1);}
  Response.Redirect(redirect+"?AcceptsCookies="+acceptsCookies,true);
  }
  }
  3.2.3 有選择性拒绝测试法
  首先,删除机器上的所有Cookie,然后设置IE的Cookie选项,当Web系统试图设置一个Cookie时弹出提示。然后运行Web系统的所有主要功能。在弹出的Cookie提示中接受某些Cookie,拒绝一部分,然后检查Web系统的工作情况,看Web服务器是否能检测出某些Cookie被拒绝了,是否出现正确的提示信息。有可能Web系统会因为这样出现错误、崩溃、数据错乱,或其他不正常的行为。
  Protected void Button1_click(object sender,EventArgs e)//设置Cookie
  {
  HttpCookie myCookie=new HttpCookie("LastViset");
  DateTime now=DateTime.now;
  myCookie.Value=now.ToString();   myCookie.Expires=now.AddHours(1);
  Response.Cookies.Add(myCookie);
  }
  Protected void Button2_click(object sender,EventArgs e)//读取Cookie
  {
  If(Request.Cookies["LastViset"]!=null)
  {This.Label1.Text=Request.Cookies["LastViset"].Value;}
  }
  3.2.4 篡改测试法[5]
  该方法通过对计算机上已存在的Cookie信息进行篡改,测试Cookie机制能否及时更新替换Cookie文件。以网站的第几位访问者问题为例。
  Protected void Page_Load(object sender,EventArgs e)
  {
  int counter;
  if(Request.Cookies["counter"]==0){Counter=0;}
  Else
  {Counter=int.Parse(Request.Cookie["counter"].Value);}
  counter++;
  If(counter==8)
  {This.Label2.Text="您是第8位访问者!";}
  Reponse.Cookies["counter"].Value=counter.ToString();
  Reponse.Cookies["counter"].Expires=DateTime.Now.AddDays(1);
  }
  4 结束语
  本文首次提出了Cookie测试的概念,并对如何测试Cookie进行了分析,并采用:通过已有测试工具进行测试、屏蔽Cookie测试法、有选择性拒绝测试法、篡改测试法对Cookie测试进行了简要分析,实验证明以上几种方法可以有效的实现对Cookie的初步测试。然而,由于Cookie的特殊性,要实现对Cookie的完全测试十分困难,且在每种浏览器对Cookie的兼容效果亦不相同。
  参考文献:
  [1]文德民,门爱东,文爱平.基于Cookie的跨域单点登录系统的设计[J].电脑知识与技术,2009(05):9146-9147.
  [2]马亚娜,钱焕延,孙亚民.Cookie在Web认证中的应用研究[J].刑事技术,2004(02):18-21.
  [3]吴春生,宋润,贾永生.Cookie信息取证方法简述[J].刑事技术,2011(01):18-21.
  [4]Cookie测试工具小汇总[OL].软件测试网.http://www.51testing.com/html/index.html
  [5]Cookie安全测试[OL].软件测试网.http://www.51testing.com/html/index.html
  作者简介:李柱(1985-),男,硕士,主要研究方向:软件测试技术与理论。
  作者單位:重庆交通大学办公自动化系统管理办公室,重庆 400074
其他文献
摘 要:根据Android游戏平台的特性,并结合教育类游戏的特点,开发一款基于Android移动平台的科学急救游戏软件,探究手机游戏的娱乐性和教育性的平衡,并分析游戏的关键玩法和游戏特色,完成游戏客户端的主体框架和功能模块设计。  关键词:手机游戏;科学急救;Cocos2d-X;Box2D游戏引擎  中图分类号:TP311.52  近年来,手机游戏的发展空前繁荣,通过分析手机游戏的现状,我们不难发
期刊
摘 要:本文就USBKey在支付系统中的非对称加密算法、USBKey技术、CA证书、加密服务提供程序等关键技术进行了研究。建立了USBKey支付系统的总体设计模型,设计并实现了客户端和后台管理模块。最后,对USBKey在不同领域支付系统中的实际应用做出了展望。  关键词:USBKey;加密;支付系统  中图分类号:TP311.52  随着社会经济的不断发展,互联网交易在经济活动中占有越来越多的比重
期刊
摘 要:参与感知系统依赖于移动用户的意愿,使用嵌入或者集成在他们手机里的各种传感器,来参与数据的收集和报告。然而,这个新数据收集范式一直不是很成功,主要是因为缺乏对参与的激励。尽管一些激励方案被提出来,鼓励用户参与,但是没有使用位置信息以及强制预算和覆盖范围的约束,我们提出了一个带有贪婪算法的重复性逆向拍卖激励机制,贪婪算法是在给出一个固定的预算的条件下,根据他们的位置选择一个代表性的用户子集。与
期刊
摘 要:划船动作瞬间完成,运动员的素质的优劣很难凭肉眼判断,尤其是船桨的用力能力判断,更是无从谈起。随着当今社会进入信息化时代,运动训练中引入数字技术,使瞬间完成的动作数字化,使抽象的运动素质得到量化细化。利用加速度传感器、压力传感器,就能准确的测出划船运动员船桨滑行能力,从而达到选人和训练的目的。  关键词:划船;船桨;信息技术;数字化船桨;无线传感器  中图分类号:TP212.1  1 设备研
期刊
摘 要:液压电梯是一种变负载、变容腔、变粘度的电液速度控制系统,且负载呈现大惯量、低频响、低阻尼的特点,其速度控制一直是个难点。当采用常规PID控制时,在控制对象变化时,控制器的参数不能自动修改适应,导致其控制效果不佳。因此本文在分析液压电梯的工作原理及传递函数的基础上,将模糊控制与PID控制相结合,利用模糊推理方法实现对PID参数的在线自整定,对液压电梯速度进行控制。并与常规PID控制进行比较后
期刊
摘 要:目的:精确管理医院科室人员,记录员工考勤信息。方法:依据医院人事相关规定,利用JAVA语言和Oracle数据库技术,开发医院考勤管理系统。结果:利用医院考勤管理系统规范医院的考勤流程,考勤记录准确,统计分析方便,提高了工作效率和医院管理水平。结论:为医院考勤提供一套简捷,高效的解决方案。  关键词:考勤;医院管理;信息系统  中图分类号:TP393  在我国,多数中小型医院都是采用传统的方
期刊
摘 要:面对层次高低不一的学生,如何从层出不穷的教学方法和教学手段中选出一条合适的道路,改良课堂教学策略,成了提高课堂有效性教学提升的关键因素。本人根据多年在中等职业学校担任《C语言程序设计》的教学体会,结合当下所教班级中学生的实际情况,就C语言课程的有效教学展开论述。  关键词:中职;C语言;设计;教学;有效性  中图分类号:TP312.1-4  1 存在的问题和困惑  《C语言程序设计》课程共
期刊
摘 要:本文介绍了新疆大学教师科研工作量管理系统的分析与设计过程。本系统紧扣新疆大学科研工作量计算办法,通过集中管理教师科研工作量的基本信息并进行核算和奖励分配,从而极大推动了该校的科研管理工作的信息化和科学化。  关键词:WEB;B/S;教师科研工作量  中图分类号:TP311.52  教学、科研、服务是高校的三大职能,各高校在重视人才培养的同时,也越来越重视科学研究,以达到更好地服务社会的目的
期刊
摘 要:单片机是一门理论性和实践性都很强的学科,在当前出现“教师讲授难、学生理解难”的现象中,文中提出“做中学,做中教”的教学理念,强调通过“做”来掌握单片机这门技术和提高学生的实践能力,提出建立网上单片机学习答疑系统来加强学生与教师的沟通、交流,促进学生对单片机的学习。  关键词:做中教;做中学;单片机教学  中图分类号:TP368.1-4  随着电子技术和计算机技术的发展,单片机应用范围越来越
期刊
摘 要:岩溶塌陷具有突发性、隐蔽性、不确定性,其监测、预警问题一直未能得到很好的解决。本文在分析岩溶塌陷的机理及其形态因素的基础上构建监测指标体系,采用服务器端脚本技术(ASP.NET)以及Jquery框架,开发了基于B/S架构的岩溶区高速公路管控预警系统,实现了监测技术、监测数据的集成管理及分析应用,从而加强了高速公路岩溶塌陷的风险管控,并保障了高速公路道路运营安全。  关键词:岩溶塌陷;监测;
期刊