Web网站开发中,Cookie是什么?
你好,是我琉忆。
今天我们讲一讲什么是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月底写完,敬请期待~
如果有需要的小伙伴可以提前预定哦~
预定网址:71慕课网-精品课程:【村长编写】14天零基础到入门搞定ASP.NET Web网页开发【书籍】预售帮助每个新人从零开始学习编程。提供了编程学习课程,编程教程,编程博客和相关练习题。如果你是第一次学习编程或者正在学习编程的时间,那么这个网站会很适合你。你可以在这里获取全部跟编程相关的学习资料。学好编程,成就自己的梦想。http://www.71muke.com/course/info/99更多编程知识获取,可以关注公众号:琉忆编程库。
Web网站开发中,Cookie是什么?相关推荐
- chatgpt赋能python:Python是一门强大的编程语言,它在数据分析和数据处理方面广受欢迎。在网站开发中,Python也被广泛应用。它可以用于开发Web应用、爬虫、自动化测试等。此外,Pyt
Python是一门强大的编程语言,它在数据分析和数据处理方面广受欢迎.在网站开发中,Python也被广泛应用.它可以用于开发Web应用.爬虫.自动化测试等.此外,Python也可以用于创建表格.在本文 ...
- 用python做网站开发的课程_腾讯课堂:Flask Python Web 网站开发
大家好,欢迎大家学习优品课堂出品的Python完全零基础入我们精讲的系列教程这节课 我们来看第一个,我们先了解一下计算机常识,这节课我们来介绍.计算机的概念和组成,那不仅是开发人员作为普通用户电脑的使 ...
- java记住密码 cookie_Java Web网站怎么利用Cookie实现记住密码功能
在做java web网站开发时,为了避免每次登录都需要输入用户名和密码,我们会使用Cookie技术来实现记住密码功能,在这里小编使用简单的项目案例来教大家具体的实现过程. 前期准备 1.下载好jque ...
- php页面开发,PHP网站开发中常用的8个小技巧
这篇文章主要介绍了PHP网站开发中常用的8个小技巧,本文讲解了命名.使用.PHP判断Form表单是否提交.PHP 获取字符串长度.PHP超全局对象等内容,需要的朋友可以参考下 PHP是一种用于创建动态 ...
- 网站开发中很实用的 HTML5 jQuery 插件
这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...
- web前端开发中需要掌握的技术:
web前端开发中需要掌握的技术: 1.学习HTML,这是最简单,最基本的是要掌握div,formtable.Ulli.P.跨度.字体这些标签,这些都是最常用的,尤其是DIV和表格,DIV,表也可以用于 ...
- 好用的手机Web网站开发工具:Mobirise for Mac
Mobirise mac版是一个用户友好且直观的手机Web网站开发工具,可以为您提供正确的工具和模板,使您能够尽可能轻松地构建网站,而无需编写一行代码.只需点击几下鼠标,即可为您提供用户友好的环境以及 ...
- php利用文件做数据储存,PHP_PHP文件读写操作之文件写入代码,在PHP网站开发中,存储数据通 - phpStudy...
PHP文件读写操作之文件写入代码 在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势, ...
- 网站开发中敏感信息加密
系统总是有打不完的补丁和漏洞,你会是下一个黑客攻击的目标吗?还在为网站数据泄露的防范绞尽脑汁?或者您还在找寻更靠谱的数据加密解决方案?通过这门精心设计的在线课程+动手实验,您可以轻松Get到这些技能. ...
最新文章
- awk处理文件内容格式
- 自学python要看哪些书籍-学习机器学习应该看哪些书籍?
- [New Portal]Windows Azure Virtual Machine (5) 配置VM的Endpoints
- 关于手机横屏打开相机或者相册闪退解决方案
- 类加载器-启动类加载器
- [HTML]去除li前面的小黑点,和ul、LI部分属性
- 网络切片技术缺点_一文读懂网络切片 - 技术综合版块 - 通信人家园 - Powered by C114...
- python基础-字符串(6)
- java删除指定文件后重新建立文件系统_java file 操作之创建、删除文件及文件夹...
- 急聘:IDC机房建设相关职位
- android音视频播放技术背景,Android音视频开发-入门(一)
- 天真贝叶斯学习机 | TiDB Hackathon 优秀项目分享
- 解决win10家庭版本系统无法远程连接问题
- vue实现预览pdf组件(vue-pdf插件使用)
- 项目常用后端代码结构
- 链游界王炸巨作 一个足够炫酷的NFT赛犬游戏震撼问世
- 基于激光点云数据自动化实现道路标线分类、提取及矢量化
- Microsoft Web Farm Framework (WFF) 2.0正式发布
- 跟我一起从零学习安卓逆向分析
- 项目管理工具之甘特图