首页 > 其他 > 详细

Cookie

时间:2014-04-10 15:21:08      阅读:483      评论:0      收藏:0      [点我收藏+]

1.Cookie的定义和分类,及优缺点
   定义和分类:读cookie的时候,我知道的就有两种方法:
                    第一种,利用request.cookie[name](name是字符串)来读取;
                    比如你定义的就这样读取
                    HttpCookie cookie = new HttpCookie("jfy", "nihaosdafdfd");
                          Response.Cookies.Add(cookie );
                          Response.Write(Request .Cookies["jfy"].Value );
                   第二种就是利用Response .Cookies .Get (name).Value来读取;
                   比如:
                   HttpCookie cookie = new HttpCookie("jfy", "nihaosdafdfd");
                         Response.Cookies.Add(cookie );
                         Response.Write( Response .Cookies .Get ("jfy").Value );
                  这两种方法都是根据name来获取的!
                  我就只知道这两种用法,至于为什么要这样用,而不直接用你说的cookie.value,我就不知道了!不过,这也算是解决了你问的问题“怎么用jfy”。
无Cookie会话的优点

在 ASP.NET 中,会话管理和表单身份验证是唯一的两个在后台使用 Cookie 的系统功能。通过无 Cookie 会话,您现在可以部署无论用户的有关 Cookie 的首选项如何都能正常工作的有状态应用程序。然而,就 ASP.NET 1.x 而言,仍然需要使用 Cookie 来实现表单身份验证。好消息是,在 ASP.NET 2.0 中,表单身份验证可以选择以无 Cookie 方式工作。

另一个经常提出的反对 Cookie 的理由是安全性。这是一个值得予以更多关注的要点。

Cookies 是无活动能力的文本文件,因此,这些文件可能被攻击者替换或损坏 — 只要他们获得了对计算机的访问。真正的威胁并不在于 Cookie 可以在客户端计算机上安装什么,而是在于它们可以向目标站点上载什么。Cookie 不是程序,并且永远不会像程序那样运行;然而,您计算机上安装的其他软件可以使用对 Cookie 的浏览器内置支持来远程从事破坏活动。

此外,Cookie 要受到被盗窃的风险。一旦失窃,包含有价值的和私人的信息的 Cookie 就可能将其内容泄露给恶意攻击者,并且为其他类型的 Web 攻击提供便利。总之,通过使用 Cookie,您将自己暴露在本可以消除的风险之中。这是真的吗?

无Cookie会话的缺点

让我们从另一个角度来考察安全性。您是否曾经听说过会话劫持?如果没有,则请阅读一下 TechNet Magazine 文章 Theft On The Web: Prevent Session Hijacking。简单说来,当攻击者获得对特定用户的会话状态的访问时,将发生会话劫持。其实质是,攻击者窃取有效的会话 ID,并且使用它侵入系统和窥探数据。获取有效会话 ID 的一种常见方式是窃取有效的会话 Cookie。鉴于此,如果您认为无 Cookie 会话保护了您应用程序的安全,那您就完全错了。实际上,对于无 Cookie 会话,会话 ID 直接显示在地址栏中!请尝试下列操作:

连接到使用无Cookie会话的 Web 站点(例如,MapPoint)并获得一个映射。此时,该地址存储在会话状态中。

◆抓取 URL(直至页名称)。不要包括查询字符串,但请确保该 URL 包括会话 ID。

◆将该 URL 保存到文件中,并将该文件复制/发送到另一台计算机。

◆在第二台计算机上打开该文件,并将该 URL 粘贴到新浏览器实例中。

◆只要会话超时仍然有效,就会显示同一个映射。

◆通过无Cookie会话,可以比以往任何时候都更加容易地窃取会话 ID。

从道德的观点来看,窃取会话是应该受到谴责的操作,我相信大家会一致认同这一点。但它是否也是有害的?这取决于会话状态中实际存储的内容。窃取会话 ID 本身并不会执行超出代码控制范围的操作。但是,它可能向未经授权的用户泄露私有数据,并且使一些坏家伙能够执行未经授权的操作。有关如何在 ASP.NET 应用程序中阻止会话劫持的提示,请阅读 Wicked Code: Foiling Session Hijacking Attempts。(而且,它并不依赖于无 Cookie 会话!)

使用无Cookie会话还会引起与链接有关的问题。例如,您不能在 ASP.NET 页中具有绝对的、完全限定的链接。如果您这样做,那么源自该超链接的每个请求都将被视为新会话的一部分。无 Cookie 会话要求您总是使用相对 URL,就像在 ASP.NET 回发中一样。仅当您可以将会话 ID 嵌入到 URL 中时,您才可以使用完全限定的 URL。但是,既然会话 ID 是在运行时生成的,那么您如何才能做到这一点呢?

下面的代码中断了该会话:

  1. <arunat="server"href="/test/page.aspx">Click< /a>

要使用绝对 URL,可以借助于一个小技巧,即,使用 HttpResponse 类上的 ApplyAppPathModifier 方法:

  1. <arunat="server"href=< % =Response.ApplyAppPathModifier("/test/page.aspx")%>>Click< /a>

ApplyAppPathModifier 方法采用一个表示 URL 的字符串作为参数,并且返回一个嵌入了会话信息的绝对 URL。例如,当您需要从 HTTP 页重定向到 HTTPS 页时,该技巧尤其有用。最后,请特别注意,每当您在同一个浏览器内部键入指向某个站点的路径时,您都将丢失无 Cookie 会话的状态。还要请您注意的是,对于移动应用程序,如果设备无法处理专门格式化的 URL,则无 Cookie 会话可能会出现问题。

2.在程序中如何实现Cookie信息的设置,读取和删除
//
创建一个HttpCookie对象
          HttpCookie cookie = new HttpCookie("RON");
          //设定此cookies值
          cookie.Value = "我叫小魏";
          //设定cookie的生命周期,在这里定义为三分钟
          DateTime dtNow = DateTime.Now;
          TimeSpan tsMinute = new TimeSpan(0, 0, 3, 0);
          cookie.Expires = dtNow + tsMinute;
         cookie["Name"] = "小魏";
         cookie["Sex"] = "";
         cookie["Age"] = "22";
         //加入此cookie
         Response.Cookies.Add(cookie);
         Response.Write("Cookie创建完毕");

3.查找一下面向对象编程思想及其相关内容,并更新在自己的博客上
  要我说,无论是面向过程的语言也好,面向对象的语言也罢,我首先要给他讲的都是类和对象!--------“这个世界是由什么组成的?”这个问题如果让不同的人来回答会得到不同的答案。如果是一个化学家,他也许会告诉你“还用问嘛?这个世界是由分子、原子、离子等等的化学物质组成的”。如果是一个画家呢?他也许会告诉你,“这个世界是由不同的颜色所组成的”。……呵呵,众说纷纭吧!但如果让一个分类学家来考虑问题就有趣的多了,他会告诉你“这个世界是由不同类型的物与事所构成的”好!作为面向对象的程序员来说,我们要站在分类学家的角度去考虑问题!是的,这个世界是由动物、植物等组成的。动物又分为单细胞动物、多细胞动物、哺乳动物等等,哺乳动物又分为人、大象、老虎……就这样的分下去了!

  现在,站在抽象的角度,我们给“类”下个定义吧!我的意思是,站在抽象的角度,你回答我“什么是人类?”首先让我们来看看人类所具有的一些特征,这个特征包括属性(一些参数,数值)以及方法(一些行为,他能干什么!)。每个人都有身高、体重、年龄、血型等等一些属性。人会劳动、人都会直立行走、人都会用自己的头脑去创造工具等等这些方法!人之所以能区别于其它类型的动物,是因为每个人都具有人这个群体的属性与方法。“人类”只是一个抽象的概念,它仅仅是一个概念,它是不存在的实体!但是所有具备“人类”这个群体的属性与方法的对象都叫人!这个对象“人”是实际存在的实体!每个人都是人这个群体的一个对象。老虎为什么不是人?因为它不具备人这个群体的属性与方法,老虎不会直立行走,不会使用工具等等!所以说老虎不是人!
  由此可见-------类描述了一组有相同特性(属性)和相同行为(方法)的对象。在程序中,类实际上就是数据类型!例如:整数,小数等等。整数也有一组特性和行为。面向过程的语言与面相对象的语言的区别就在于,面向过程的语言不允许程序员自己定义数据类型,而只能使用程序中内置的数据类型!而为了模拟真实世界,为了更好的解决问题,往往我们需要创建解决问题所必需的数据类型!面向对象编程为我们提供了解决方案。
 
4.如果给一个单位做相关的软件,你认为最重要的是需要得到谁的支持,为什么?
   最重要的是自己支持和理解,本单位一等人还是第二个支持。

 

Cookie,布布扣,bubuko.com

Cookie

原文:http://www.cnblogs.com/shbk-/p/3656012.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!