Cookie与Session

Cookie
Cookie 是服务器(Server)传送给浏览器(Client)的一小片段资料,并请浏览器保存起来,以便往後向相同的服务器发送请求时,附上这 Cookie 的资料。

Cookie 常见用途
1. 储存和追踪使用者行为
2. 储存用户登入、购物车等服务器所需的资讯
3. 储存使用者设定和偏好等

基本用户登入流程范例
1. 使用者透过浏览器登入画面登入
2. 服务器端通过验证後,可以将使用者「已经登入」的资讯附在 Cookie 中回传,并请浏览器保存起来
3. 往後,每当浏览器对服务器发出请求时,会一并附上存有使用者「已经登入」状态资讯的 Cookie 给服务器
4. 服务器透过 Cookie 就能辨识这位使用者已经通过验证

使用 Cookie 传送重要资讯的安全性隐忧
透过 Cookie,我们的确达成目标,让服务器可以在往後透过客户端发出的请求,辨识使用者及其登入状态,非常方便。然而这些资讯其实用户是有机会可以在浏览器中修改的,因此使用者能透过串改 Cookie 上的Value

因此尽量避免将敏感资讯透过 Cookie 存在客户端

Session
Session 会将使用者的敏感资讯存放在服务器端,并创建一个相对应且独特的 ID(Session ID),在回传给客户端的 Cookie 中一并附上,未来客户端只要附上含有这个 Session IDCookie 给服务器,服务器就能匹配相对应的 Session

透过实例来了解Cookie和Session的差别吧~
试想 Cookie是一张领餐的号码牌,而Session是一张数位会员卡,可以将你的个人资料、交易记录、餐点细节与喜好...等,都记录在你的数位会员卡里,让系统能够快速辨别你的身分,解决号码牌遗失的问题。

因此重要的资讯,并不建议存放在客户端,容易遭到有心人士窜改
可改存放在Session内,相对的安全许多!

再专案中安装Session吧

载入Session

安装express-session套件

$ npm install express-session

引入 express-session 套件

const session = require('express-session')

官方范例


<<:  硬碟上的资料是否有重量?

>>:  SQL Server Agent 权限 - 心得分享

第六章 之六

既然提到页面跟文章,那当然少不了要介绍一下非常好用的两个页面外挂,这帮助了非常多原本就不懂前後端语法...

图的资料结构

3 图的资料结构 今天来介绍我们储存一张图的时候,几种常见的资料结构:相邻矩阵(Adjacency ...

30-12 之 Domain Layer - Domain Model ( 未完成版 )

这篇文章接下来我们要谈谈《 企业应用架构模式- Martin Fowler 》这本书中所提 doma...

09. E2E Test x Browser Test x Cypress

cypress 安装步骤 step 1. 安装 npm install cypress --save...

Vue.js 从零开始:SPA怎麽改善SEO呢? MVC与关注点分离又是什麽?

上一篇讲到SPA的缺点,Vue是用JvaScript载入後台的数据,并且动态产生元件,SEO只能抓取...