当前位置:网站首页>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
边栏推荐
- Redis -- cache breakdown, penetration, avalanche
- Pytest (1) case collection rules
- flex九宫格布局
- Fe - eggjs combined with typeorm cannot connect to the database
- A preliminary study on ant group G6
- Virtualenv and pipenv installation
- Eslint configuration code auto format
- In depth study of JVM bottom layer (II): hotspot virtual machine object
- sprintf_s的使用方法
- Sentry搭建和使用
猜你喜欢

Stack (linear structure)

Utilisation de la carte et de foreach dans JS

Shardingsphere JDBC

js中map和forEach的用法

js中对于返回Promise对象的语句如何try catch

Win电脑截图黑屏解决办法

Thread hierarchy in CUDA

Huawei mindspire open source internship machine test questions

20201002 vs 2019 qt5.14 developed program packaging

Recursion (maze problem, Queen 8 problem)
随机推荐
Pytest (1) case collection rules
Stack (linear structure)
Automation - when Jenkins pipline executes the nodejs command, it prompts node: command not found
Nodejs - Express middleware modification header: typeerror [err_invalid_char]: invalid character in header content
unittest.TextTestRunner不生成txt测试报告
由於不正常斷電導致的unexpected inconsistency;RUN fsck MANUALLY問題已解决
CTF three count
There is no way to drag the win10 desktop icon (you can select it, open it, delete it, create it, etc., but you can't drag it)
NodeJs - Express 中间件修改 Header: TypeError [ERR_INVALID_CHAR]: Invalid character in header content
CVE-2015-1635(MS15-034 )遠程代碼執行漏洞複現
Pytest (2) mark function
Pytest (3) parameterize
20201002 VS 2019 QT5.14 开发的程序打包
Latex warning: citation "*****" on page y undefined on input line*
Selenium memo: selenium\webdriver\remote\remote_ connection. Py:374: resourcewarning: unclosed < XXXX > solution
FE - Eggjs 结合 Typeorm 出现连接不了数据库
AWD learning
In depth study of JVM bottom layer (II): hotspot virtual machine object
qq邮箱接收不到jenkins构建后使用email extension 发送的邮件(timestamp 或 auth.......)
工具种草福利帖