当前位置: 首页 > Web前端 > HTML

在网站开发中,什么是cookie?

时间:2023-03-27 23:32:40 HTML

大家好,我是刘义。今天我们就来说说什么是cookie,以及如何理解cookie。比如在我们的web开发中,如果我们要长期保存一个用户的信息,需要采用什么样的存储方式呢?一起来看看吧。1.Cookie对象先从Cookie说起。在ASP.NET开发中,提供了Cookie对象。该对象已经封装了与cookie相关的所有操作。我们不需要关心底层的封装实现。我们需要重点关注这个对象的操作和使用。2.什么是cookie?Cookie有几种翻译和解释:cookies;聪明能干的人;坚强的人;网络cookie(网络或互联网用户向中央服务器发送的计算机文件信息)。显然对这个英文最好的解释就是“Internetcookie”。它是保存在客户端计算机中的简单文本文件。是一些网站为了识别用户身份,进行Session跟踪而存储在用户本地终端的数据(通常是加密的)。它由用户的客户端计算机临时或永久保存。信息。由于Cookie具有保存在客户端计算机上的神奇特性,它可以帮助我们实现记录用户个人信息的功能,而这一切都不需要使用CGI等复杂的程序来完成。例如,一个网站可能会为每个访问者生成一个唯一的ID,然后以cookie文件的形式将其保存在每个用户的机器上。如果您使用浏览器访问网络,您将看到存储在您硬盘上的所有cookie。此文件夹中的每个文件都是一个由“名称/值”对组成的文本文件,还有另一个文件包含所有相应网站的信息。这里的每个cookie文件都是一个简单的纯文本文件。通过文件名可以看到是哪个网站在机器上放置了cookie,当然文件中也保存了站点信息。Cookie主要由以下内容组成:Cookie是一小段不超过4KB的文本数据,由名称(Name)、值(Value)和其他几个可选属性组成,用于控制有效期、安全性、cookie的使用范围。其中:(1)Name/Value:设置cookie的名称和对应的值。对于身份验证cookie,Value值包括Web服务器提供的访问令牌。(2)Expires属性:设置cookie的生存期。cookie有两种存储类型:会话和持久。默认情况下,Expires属性是一个会话cookie,只保存在客户端内存中,当用户关闭浏览器时失效;一个永久性的cookie会一直保存在用户的硬盘中,直到有效期届满或者用户直接点击网页,点击“注销”等按钮结束会话后才会生效。(3)Path属性:定义了网站上可以访问cookie的目录。(4)域属性:指定可以访问cookie的网站或域。cookie机制不遵循严格的同源策略,允许子域设置或从其父域获取cookie。cookie的上述特性在实现单点登录方案时非常有用,但同时也增加了cookie被攻击的风险,例如,攻击者可以借此发起会话固定攻击。因此,浏览器在Domain属性中禁止设置.org、.com、注册在国家和地区顶级域名下的二级域名,以减少攻击范围。(5)secure属性:指定是否使用HTTPS安全协议发送Cookie。使用HTTPS安全协议可以保护cookies在浏览器和web服务器之间传输过程中不被窃取和篡改。该方法还可以用于网站的身份认证,即在HTTPS连接建立阶段,浏览器会检查网站SSL证书的有效性。但基于兼容性原因(例如部分网站使用自签名证书),当检测到无效的SSL证书时,浏览器不会立即终止用户的连接请求,而是会显示安全风险信息,用户可以仍然选择继续访问该站点。地点。由于很多用户缺乏安全意识,仍然有可能连接到被Pharming攻击伪造的网站。(6)HTTPOnly属性:用于防止客户端脚本通过document.cookie属性访问cookie,有助于保护cookie不被跨站脚本攻击窃取或篡改。但是,HTTPOnly的应用还是有局限性的。一些浏览器可以阻止客户端脚本读取cookie,但允许写入操作;此外,大多数浏览器仍然允许通过XMLHTTP对象读取HTTP响应中的Set-Cookie标头。你需要知道的是:一个网站支持使用多个cookie,每个cookie的键名可以不同,每个键名可以存储的东西也可以不同。如果键相同,则后一个键的值将覆盖前一个键的值。Cookie技术有很多局限性,例如:1)多人共用一台电脑,cookie数据容易泄露。2)站点存储有限的cookie信息。3)部分浏览器不支持cookies。4)用户可以通过设置浏览器选项来禁用cookies。由于以上cookies的局限性,在进行session管理时,SessionID通常会通过cookies和urls两种方式保存,而不是只保存在cookies中。【如果你还没有关注我,可以稍微关注一下,下次更新精彩博文时会通知你】3、为什么需要cookies?在简单介绍了cookies是什么,它们的组成和使用过程之后,我们再来看看为什么需要cookies。最根本的原因是HTTP协议是无状态协议,每个请求进程只负责传输数据,不区分请求来源,这就导致需要使用Cookie技术来区分不同的请求者。通过前面的介绍,我们知道cookie其实就是一个不超过4KB的小文本数据,由name、value和一些可选属性组成。可以这样理解,客户端每次向服务端发起请求,请求头都会在请求后端添加一个cookie,后端可以获取cookie来区分请求来源。这里需要注意的是cookie的大小不要超过4KB,所以没有办法用cookie来存储太大的数据。其次,不建议使用cookie来记住过多的关键信息,以免在请求过程中消耗过多带宽,降低网页访问效率等问题。另外,还需要知道cookie是存储在客户端电脑上的,而且存储的cookie数据一般都是经过加密处理的。保存在客户端的cookie文件的有效期是可以设置的,甚至可以永久保存在客户端电脑上。4.cookies用在什么地方?Cookie可用于存储用户名、密码和站点访问次数等信息。有这样一种场景,后台登录页面有选项是记住用户名还是记住密码。当我们勾选登录成功后,我们会发现下次进入登录页面时,账号和密码都被保存了。本场景使用Cookie存储。您可能想知道为什么在这种情况下使用cookie。把账号密码之类的数据保存在客户端不安全吗?首先我们要知道cookies是可以在本地缓存数据的,也就是说cookies中保存的数据是保存在客户端的。当我们勾选“记住用户名或密码”时,我们允许Cookie记住用户名和密码。那么当我们再次进入登录页面时,就可以直接读取Cookie的数据,加载到输入框中。才能看到我们之前输入的账号和密码。那么这样写确实会存在不安全的问题,但是只要这台电脑没有被别人使用,就不用担心数据泄露。因为这些帐号和密码只有您自己知道,所以不用电脑直接查看您的帐号密码是没有问题的。所以,记住用户名和密码的场景,一般都是使用cookie来存储和实现这个功能。需要知道的是,cookies不适合存储安全性比较高的敏感数据。黑客很容易窃取本地cookie并进行破解。我写的书开始预售啦!!!目前正在写《ASP.NET Web动态网站》开发的一本书,预计2月底完成。敬请期待~有需要的可以提前预定哦~预定网址:http://www.71muke.com/course/..更多编程知识可以关注公众号:六一编程图书馆。