当前位置:网站首页>PHP Session原理简析
PHP Session原理简析
2022-07-02 06:23:00 【徐记荣】
为什么需要会话控制?(答:http协议是无状态的)
以下文字找不到出处了,我是很久之前好多文章混杂的抄在本地,原文作者见谅
大家都知道,我们目前使用的互联网应用层协议基本上都是基于HTTP和HTTPS的,它们的本事是无状态的,只负责请求和响应。我们告诉服务器我们需要什么,服务器返回给我相应的资源。如果没有额外处理的话,服务器是不知道你是谁,更无法根据你是谁给你展现和你相关的内容了。
HTTP协议初期是为了学术交流,但如今互联网应用越来越广泛,论坛、购物网站等等都需要记录用户状态,cookie、session、token应运而生,我们这篇文章只结合PHP讲session,其他的你们自己查
session工作过程
session工作过程可以分为以下几个步骤:
浏览器第一次请求网站,服务端生成Session ID。
把生成的Session ID保存到服务端存储中。
把生成的Session ID返回给浏览器,通过set-cookie。
浏览器收到Session ID,在下一次发送请求时就会带上这个Session ID。
服务端收到浏览器发来的Session ID,从Session存储中找到用户状态存储,会话建立。
此后的请求都会交换这个Session ID,进行有状态的会话。
画了个流程图
PHP中的session
我们看一下PHP如何创建Session
<?php
// 启动session
session_start();
// 声明一个名为admin的变量,并赋空值。
$_session["admin"] = null;
>
session_start()
启动session,根据session ID打开session文件,如果没有就创建一个ID(这个Session ID是通过一系列算法生成的一个唯一字符串)和对应的session文件。
session_start()函数必须位于标签之前
$_SESSION
存储和取回session变量
销毁session
unset()
unset()用于释放指定的session变量,只是把值清空,而变量还是存在的
session_destroy()
注销session,这个就是关闭session,并删除掉相应的session文件了。切断了客户端和服务端的联系。
session_destroy() 将重置 session,您将失去所有已存储的 session 数据。
session渗透测试
一般session渗透测试通过以下三个方面,我不知道全不全,对不对,大哥们可以指正补充
1.session会话固定测
例:抓包看看两次登录session值是否一样
2.session注销测试
例:登录后获得session值,退出登录后,携带session值对服务器发起请求,看看能不能够做登录态的操作
3.session超时测试
例:页面长时间不操作是否注销session
边栏推荐
- (the 100th blog) written at the end of the second year of doctor's degree -20200818
- [daily question] - Huawei machine test 01
- Win10桌面图标没有办法拖动(可以选中可以打开可以删除新建等操作但是不能拖动)
- selenium备忘录:selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed<xxxx>解决办法
- FE - Eggjs 结合 Typeorm 出现连接不了数据库
- Solution to the black screen of win computer screenshot
- ModuleNotFoundError: No module named ‘jieba. analyse‘; ‘ jieba‘ is not a package
- (第一百篇BLOG)写于博士二年级结束-20200818
- 默认google浏览器打不开链接(点击超链接没有反应)
- Render minecraft scenes into real scenes using NVIDIA GPU
猜你喜欢
Cve-2015-1635 (ms15-034) Remote Code Execution Vulnerability recurrence
Win10桌面图标没有办法拖动(可以选中可以打开可以删除新建等操作但是不能拖动)
In depth study of JVM bottom layer (V): class loading mechanism
Usage of map and foreach in JS
The default Google browser cannot open the link (clicking the hyperlink does not respond)
Sentry construction and use
Solve the problem of bindchange event jitter of swiper component of wechat applet
Sentry搭建和使用
Win10网络图标消失,网络图标变成灰色,打开网络设置闪退等问题解决
【文献阅读与想法笔记13】 Unprocessing Images for Learned Raw Denoising
随机推荐
Detailed definition of tensorrt data format
[Zhang San learns C language] - deeply understand data storage
记录一次RDS故障排除--RDS容量徒增
Win10:添加或者删除开机启动项,在开机启动项中添加在用户自定义的启动文件
Render minecraft scenes into real scenes using NVIDIA GPU
pytest(1) 用例收集规则
Win10: add or delete boot items, and add user-defined boot files to boot items
20201025 visual studio2019 qt5.14 use of signal and slot functions
Cve - 2015 - 1635 (ms15 - 034) réplication de la vulnérabilité d'exécution de code à distance
Huawei mindspire open source internship machine test questions
查询GPU时无进程运行,但是显存却被占用了
Solution to the black screen of win computer screenshot
Latex在VSCODE中编译中文,使用中文路径问题解决
VSCODE 安装LATEX环境,参数配置,常见问题解决
Latex参考文献引用失败 报错 LaTeX Warning: Citation “*****” on page y undefined on input line *
The table component specifies the concatenation parallel method
In depth study of JVM bottom layer (IV): class file structure
Linux MySQL 5.6.51 community generic installation tutorial
Thread hierarchy in CUDA
Function execution space specifier in CUDA