你好,是我琉忆。
明天咱们讲一讲什么是 Cookie,怎么了解 Cookie。
在咱们 Web 开发中,例如要想短暂的存储一个用户的信息,到底须要应用什么样的一个形式进行贮存?咱们一起来看看。
1、Cookie 对象
咱们先从 Cookie 开始介绍,在 ASP.NET 开发中,提供了 Cookie 对象。该对象曾经封装好了所有对 Cookie 相干的操作,底层的封装实现咱们不须要关怀,须要重点把握该对象的操作和应用。
2、什么是 Cookie?
Cookie 的翻译解释有以下几种:曲奇; 精明强干的人; 刚强的人; 网络饼干(网络或互联网使用者发给地方服务器信息的计算机文件)。很显著对该英文的最好解释是“网络饼干”。它是一个保留在客户机中的简略的文本文件,是某些网站为了分别用户身份,进行 Session 跟踪而贮存在用户本地终端上的数据(通常通过加密),由用户客户端计算机临时或永恒保留的信息。
因为 Cookie 具备能够保留在客户机上的神奇个性, 因而它能够帮忙咱们实现记录用户个人信息的性能, 而这所有都不用应用简单的 CGI 等程序实现。举例来说, 一个 Web 站点可能会为每一个访问者产生一个惟一的 ID, 而后以 Cookie 文件的模式保留在每个用户的机器上。如果应用浏览器拜访 Web, 会看到所有保留在硬盘上的 Cookie。在这个文件夹里每一个文件都是一个由“名 / 值”对组成的文本文件, 另外还有一个文件保留有所有对应的 Web 站点的信息。在这里的每个 Cookie 文件都是一个简略而又一般的文本文件。透过文件名, 就能够看到是哪个 Web 站点在机器上搁置了 Cookie,当然站点信息在文件里也有保留。
Cookie 次要由以下内容组成:
Cookie 是一段不超过 4KB 的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于管制 Cookie 有效期、安全性、应用范畴的可选属性组成。其中:
(1)Name/Value:设置 Cookie 的名称及绝对应的值,对于认证 Cookie,Value 值包含 Web 服务器所提供的拜访令牌。
(2)Expires 属性:设置 Cookie 的生存期。有两种存储类型的 Cookie:会话性与持久性。Expires 属性缺省时,为会话性 Cookie,仅保留在客户端内存中,并在用户敞开浏览器时生效;持久性 Cookie 会保留在用户的硬盘中,直至生存期到或用户间接在网页中单击“登记”等按钮完结会话时才会生效。
(3)Path 属性:定义了 Web 站点上能够拜访该 Cookie 的目录。
(4)Domain 属性:指定了能够拜访该 Cookie 的 Web 站点或域。Cookie 机制并未遵循严格的同源策略,容许一个子域能够设置或获取其父域的 Cookie。当须要实现单点登录计划时,Cookie 的上述个性十分有用,然而也减少了 Cookie 受攻打的危险,比方攻击者能够借此动员会话定置攻打。因此,浏览器禁止在 Domain 属性中设置.org、.com 等通用顶级域名、以及在国家及地区顶级域下注册的二级域名,以减小攻打产生的范畴。
(5)Secure 属性:指定是否应用 HTTPS 平安协定发送 Cookie。应用 HTTPS 平安协定,能够爱护 Cookie 在浏览器和 Web 服务器间的传输过程中不被窃取和篡改。该办法也可用于 Web 站点的身份甄别,即在 HTTPS 的连贯建设阶段,浏览器会查看 Web 网站的 SSL 证书的有效性。然而基于兼容性的起因(比方有些网站应用自签订的证书)在检测到 SSL 证书有效时,浏览器并不会立刻终止用户的连贯申请,而是显示平安危险信息,用户仍能够抉择持续拜访该站点。因为许多用户不足安全意识,因此仍可能连贯到 Pharming 攻打所伪造的网站。
(6)HTTPOnly 属性:用于避免客户端脚本通过 document.cookie 属性拜访 Cookie,有助于爱护 Cookie 不被跨站脚本攻打窃取或篡改。然而,HTTPOnly 的利用仍存在局限性,一些浏览器能够阻止客户端脚本对 Cookie 的读操作,但容许写操作;此外大多数浏览器仍容许通过 XMLHTTP 对象读取 HTTP 响应中的 Set-Cookie 头。
须要晓得的是:一个网站反对多个 Cookie 的应用,每个 Cookie 的键名能够不同,每个键名能够存储的货色都能够不一样。如果键名一样,那么后一个键名的值会笼罩前一个键名的值。
Cookie 技术有很多局限性,例如:
1)多人共用一台计算机,Cookie 数据容易泄露。
2)一个站点存储的 Cookie 信息无限。
3)有些浏览器不反对 Cookie。
4)用户能够通过设置浏览器选项来禁用 Cookie。
正是因为以上 Cookie 的一些局限性,所以,在进行会话治理时,SessionID 通常会抉择 Cookie 和 URL 两种形式来保留,而不是只保留在 Cookie 中。
【如果你还没有关注我,能够点点关注,下次更新精彩博文,我告诉你】
3、为什么须要 Cookie?
简略介绍了 Cookie 是什么、组成和应用过程后,咱们来看看为什么须要用到 Cookie。
最基本的起因还是因为 HTTP 协定是无状态协定,每次申请过程只负责传输数据而不辨别申请起源,导致须要应用 Cookie 技术来辨别不同的请求者。通过后面的介绍咱们晓得,Cookie 其实只是一个不超过 4KB 的小型文本数据,由名称、值和一些可选属性组成。能够了解为,客户端每次向服务端申请时,申请头都会增加 Cookie 申请后端,后端能够获取该 Cookie 辨别申请起源。
在这里咱们须要重点把握的是 Cookie 大小不超过 4KB,所以没有方法应用 Cookie 存储过大的数据。其次也不倡议应用 Cookie 记住太多的要害信息,防止申请过程中耗费过多带宽以及升高网页拜访效率等问题。除此之外,还须要晓得 Cookie 是存储在客户端电脑的,存储的 Cookie 数据个别是加密过的,存储在客户端的 Cookie 文件能够设置有效期工夫,甚至能够永恒存储在客户端电脑。
4、Cookie 应用在哪些场合?
Cookie 能够用来存储用户名、明码、拜访该站点的次数等信息。
有这样一种场景,后盾登录页有一个记住用户名或者记住明码的选项,当咱们打钩登录胜利后,下次再进到登录页时会发现账号和明码都保留有。这种场景用的就是 Cookie 存储了。
你可能会奇怪为什么这种场景用的是 Cookie,存储数据在客户端这样账号和明码不是不平安吗?首先咱们要晓得,Cookie 能够缓存数据到本地,也就是说 Cookie 存储的数据是存储在客户端的。当咱们勾选“记住用户名或者记住明码”时,就是容许 Cookie 记住用户名和明码,那么当咱们再次进入这个登录页时,能够间接读取 Cookie 的数据回来加载显示到输入框中,从而看到咱们之前输出的账号和明码。那么这样写的确会存在不平安的问题,然而只有这台电脑不是给他人应用,都不必放心存在泄露数据。因为这些账号和明码自身就只有你晓得,他人不必你电脑就不存在间接查看你的账号密码的问题。
所以记住用户名和明码的场景个别都是应用 Cookie 来存储实现该性能。须要晓得的是 Cookie 不适宜存储安全性比拟高、敏感的数据。容易存在黑客窃取本地 Cookie 破解的问题。
我写的书开始 预售 了!!!
最近正在写一本《ASP.NET Web 动静网站》开发的书,预计 2 月底写完,敬请期待~
如果有须要的小伙伴能够提前预约哦~
预约网址:http://www.71muke.com/course/…
更多编程常识获取,能够关注公众号:琉忆编程库。