cookie和session

本文详细对比了Cookie与Session的工作原理及应用区别。Cookie存储在客户端,适用于非敏感信息;而Session存储于服务器端,用于保存账号密码等敏感信息,提高了安全性。
cookie和session的区别:
1.cookie是存放客户端浏览器中,session存放在服务器端
2.一般不会使用cookie保存用户名和密码等敏感信息,因为浏览器存储之后,可以通过工具获取到cookie,一旦cookie被捕获,则这些信息就会暴露,可以用来存储登录状态、sid、访问记录....
3.session相对来说比cookie安全性高,可以存放账号密码等敏感信息,而且还可以存储一些稍大的数据

cookie和session交互流程:
1.客户端发起登录请求,服务器接收到请求后,验证账户,验证通过,产生一个类似于sid=XXXXXX的cookie信息,并放在response的请求头中返回
2.客户端接收到服务器的响应,提取响应报文中的响应数据进行解析,提取响应头中的Set-Cookie中的数据,并创建cookie保存cookie信息
3.下次客户端发起请求时,只需要携带cookie即可进行免登陆访问:
    3.1 服务器接收请求,从请求中提取cookie中的某些字段,例如sid、sessionid。。。。。
    3.2 验证提取的cookie信息是否被服务器端的session保存
    3.3 如果保存过,直接返回请求的数据,未保存,返回登录页面


如果客户端的浏览器禁用了 Cookie 怎么办?
一般这种情况下,在URL后面都附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。
### Cookie Session 的区别及用法 #### 定义与存储位置 Cookie 是一种小型文本文件,保存在客户端浏览器中。每次请求页面时都会发送给服务器[^1]。Session 数据则保存在服务器端,在用户的会话期间保持有效。 #### 生命周期管理 Cookies 可以设置过期时间,可以是临时性的(关闭浏览器即失效),也可以是持久化的(设定具体有效期)。Sessions 通常会在一段时间不活动后自动销毁,或者通过编程方式显式结束。 #### 安全性隐私考虑 由于 Cookies 存储于用户设备上,因此存在被篡改的风险;而 Sessions 更加安全因为数据存放在服务端。然而,如果使用不当,比如传输未加密的敏感信息,则两者都可能带来安全隐患。 #### 使用场景差异 当需要记住少量非敏感的信息如偏好设置时可以选择 Cookies 。对于涉及身份验证个人资料保护的应用程序逻辑部分更适合采用 Sessions 来处理登录状态等重要事务。 #### 实现示例 ##### 设置读取 Cookie (JavaScript) ```javascript // 创建 cookie document.cookie = "username=JohnDoe; expires=Thu, 18 Dec 2023 12:00:00 UTC"; // 获取特定名称的 cookie 值 function getCookie(name) { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) return parts.pop().split(';').shift(); } console.log(getCookie('username')); // 输出 JohnDoe ``` ##### 启动并操作 Session (PHP) ```php <?php session_start(); $_SESSION["user"] = "admin"; echo $_SESSION["user"]; // 显示 admin unset($_SESSION['user']); // 删除单个变量 session_destroy(); // 销毁整个 session ?> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值