你好,是我琉忆。

今天我们讲一讲什么是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是什么?相关推荐

  1. chatgpt赋能python:Python是一门强大的编程语言,它在数据分析和数据处理方面广受欢迎。在网站开发中,Python也被广泛应用。它可以用于开发Web应用、爬虫、自动化测试等。此外,Pyt

    Python是一门强大的编程语言,它在数据分析和数据处理方面广受欢迎.在网站开发中,Python也被广泛应用.它可以用于开发Web应用.爬虫.自动化测试等.此外,Python也可以用于创建表格.在本文 ...

  2. 用python做网站开发的课程_腾讯课堂:Flask Python Web 网站开发

    大家好,欢迎大家学习优品课堂出品的Python完全零基础入我们精讲的系列教程这节课 我们来看第一个,我们先了解一下计算机常识,这节课我们来介绍.计算机的概念和组成,那不仅是开发人员作为普通用户电脑的使 ...

  3. java记住密码 cookie_Java Web网站怎么利用Cookie实现记住密码功能

    在做java web网站开发时,为了避免每次登录都需要输入用户名和密码,我们会使用Cookie技术来实现记住密码功能,在这里小编使用简单的项目案例来教大家具体的实现过程. 前期准备 1.下载好jque ...

  4. php页面开发,PHP网站开发中常用的8个小技巧

    这篇文章主要介绍了PHP网站开发中常用的8个小技巧,本文讲解了命名.使用.PHP判断Form表单是否提交.PHP 获取字符串长度.PHP超全局对象等内容,需要的朋友可以参考下 PHP是一种用于创建动态 ...

  5. 网站开发中很实用的 HTML5 jQuery 插件

    这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...

  6. web前端开发中需要掌握的技术:

    web前端开发中需要掌握的技术: 1.学习HTML,这是最简单,最基本的是要掌握div,formtable.Ulli.P.跨度.字体这些标签,这些都是最常用的,尤其是DIV和表格,DIV,表也可以用于 ...

  7. 好用的手机Web网站开发工具:Mobirise for Mac

    Mobirise mac版是一个用户友好且直观的手机Web网站开发工具,可以为您提供正确的工具和模板,使您能够尽可能轻松地构建网站,而无需编写一行代码.只需点击几下鼠标,即可为您提供用户友好的环境以及 ...

  8. php利用文件做数据储存,PHP_PHP文件读写操作之文件写入代码,在PHP网站开发中,存储数据通 - phpStudy...

    PHP文件读写操作之文件写入代码 在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势, ...

  9. 网站开发中敏感信息加密

    系统总是有打不完的补丁和漏洞,你会是下一个黑客攻击的目标吗?还在为网站数据泄露的防范绞尽脑汁?或者您还在找寻更靠谱的数据加密解决方案?通过这门精心设计的在线课程+动手实验,您可以轻松Get到这些技能. ...

最新文章

  1. awk处理文件内容格式
  2. 自学python要看哪些书籍-学习机器学习应该看哪些书籍?
  3. [New Portal]Windows Azure Virtual Machine (5) 配置VM的Endpoints
  4. 关于手机横屏打开相机或者相册闪退解决方案
  5. 类加载器-启动类加载器
  6. [HTML]去除li前面的小黑点,和ul、LI部分属性
  7. 网络切片技术缺点_一文读懂网络切片 - 技术综合版块 - 通信人家园 - Powered by C114...
  8. python基础-字符串(6)
  9. java删除指定文件后重新建立文件系统_java file 操作之创建、删除文件及文件夹...
  10. 急聘:IDC机房建设相关职位
  11. android音视频播放技术背景,Android音视频开发-入门(一)
  12. 天真贝叶斯学习机 | TiDB Hackathon 优秀项目分享
  13. 解决win10家庭版本系统无法远程连接问题
  14. vue实现预览pdf组件(vue-pdf插件使用)
  15. 项目常用后端代码结构
  16. 链游界王炸巨作 一个足够炫酷的NFT赛犬游戏震撼问世
  17. 基于激光点云数据自动化实现道路标线分类、提取及矢量化
  18. Microsoft Web Farm Framework (WFF) 2.0正式发布
  19. 跟我一起从零学习安卓逆向分析
  20. 项目管理工具之甘特图

热门文章

  1. 我的大学——大学中的学习
  2. android realm 简书,Realm简介
  3. 《2020年IT行业项目管理调查报告》重磅发布
  4. UE4 根据相机名称实现镜头跳转
  5. 海维赛德阶跃函数Heaviside step function
  6. JAVA集合取交集工具类_集合交集、差集工具类
  7. MADDPG-学习笔记(1)
  8. 第二十八章、containers容器类部件QStackedWidget堆叠窗口部件详解
  9. 32位院士入选!重量级奖项,名单揭晓
  10. 阿里云天池机器学习训练营(Day10):幸福感预测