身份验证
Cookie(客户端存储技术)
生成cookie的原理过程
- 客户端向服务器发送HTTP请求。
- 服务器检查请求头中是否包含cookie信息。
- 如果请求头中包含cookie信息,则服务器使用该cookie来识别客户端,否则服务器将生成一个新的cookie。
- 服务器在响应头中设置cookie信息并将其发送回客户端。
- 客户端接收响应并将cookie保存在本地。
- 当客户端发送下一次HTTP请求时,它会将cookie信息附加到请求头中。
- 服务器收到请求并检查cookie的有效性。
- 如果cookie有效,则服务器响应请求。否则,服务器可能会要求客户端重新登录。
相关函数
- setcookie(): 设置一个cookie并发送到客户端浏览器。
- unset(): 用于删除指定的cookie。
案例-用cookie做后台身份验证
-
创建表(这里是用于案例里账号密码写死)

-
-
测试

-
接受输入的帐号密码

-
判断帐号密码正确性

-
结果


-
-
cookie保存的是用户的浏览器上 攻击的目标就是用户本身
Session(服务器端会话管理技术)
生成session的原理过程
- 客户端向服务器发送HTTP请求。
- 服务器为客户端生成一个唯一的session ID,并将其存储在服务器端的存储器中(如文件、数据库等)。
- 服务器将生成的session ID作为一个cookie发送给客户端。
- 客户端将session ID保存为一个cookie,通常是在本地浏览器中存储。
- 当客户端在发送下一次HTTP请求时,它会将该cookie信息附加到请求头中,以便服务器可以通过该session ID来识别客户端。
- 服务器使用session ID来检索存储在服务器端存储器中的与该客户端相关的session数据,从而在客户端和服务器之间共享数据。
相关函数
- session_start(): 启动会话,用于开始或恢复一个已经存在的会话。
- $_SESSION: 用于存储和访问当前会话中的所有变量。
- session_destroy(): 销毁当前会话中的所有数据。
- session_unset(): 释放当前会话中的所有变量。
- Session存储路径:PHP.INI中session.save_path设置路径
案例-用session做后台身份验证
-
seesion产生文件目录:phpstudy_pro\Extensions\tmp\tmp
-
session保存在服务器上
-

-
登陆后有session 退出删除

Token(身份验证与授权技术)
- token(令牌)是一种用于验证用户身份或授权访问的数字凭证
Token使用
- 生成Token并将其存储在Session
- 生成Token并将其绑定在Cookie触发
- 尝试登录表单中带入Token验证逻辑
Token要满足:
-
唯一性:每个 Token 对应唯一用户会话
-
防篡改:加密签名防止数据被伪造
-
时效性:过期机制保障安全性
案例-Token做用户登录判断
-
登陆有token值

-
退出登陆token消失(唯一性)

-
Cookie和Session区别
-
存储位置不同
- Cookie是存储在客户端(浏览器)上的
- Session是存储在服务器端的
-
安全性不同
- Cookie存储在客户端上,可能会被黑客利用窃取信息
- Session存储在服务器上,更加安全。
-
存储容量不同
- Cookie的存储容量有限,一般为4KB
- Session的存储容量理论上没有限制,取决于服务器的硬件和配置
-
生命周期不同
- Cookie可以设置过期时间,即便关闭浏览器或者重新打开电脑,Cookie仍然存在直到过期或者被删除
- Session一般默认在浏览器关闭后就会过期
-
访问方式不同
- Cookie可以通过JavaScript访问
- Session只能在服务器端进行访问。
-
使用场景不同
- Cookie一般用于存储小型的数据,如用户的用户名和密码等信息
- Session一般用于存储大型的数据,如购物车、登录状态等信息。
-

参考文章:

