当前位置:网站首页>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
边栏推荐
- Thread hierarchy in CUDA
- (the 100th blog) written at the end of the second year of doctor's degree -20200818
- AWD learning
- Latex在VSCODE中编译中文,使用中文路径问题解决
- CTF web practice competition
- Render minecraft scenes into real scenes using NVIDIA GPU
- flex九宫格布局
- Cve-2015-1635 (ms15-034) Remote Code Execution Vulnerability recurrence
- 2020-9-23 use of QT timer qtimer class.
- A preliminary study on ant group G6
猜你喜欢

蚂蚁集团g6初探

Cve-2015-1635 (ms15-034) Remote Code Execution Vulnerability recurrence

微信小程序基础

20201002 VS 2019 QT5.14 开发的程序打包

Recursion (maze problem, Queen 8 problem)

How to debug wechat built-in browser applications (enterprise number, official account, subscription number)

Implement strstr() II

Queue (linear structure)

AWD learning

CVE-2015-1635(MS15-034 )远程代码执行漏洞复现
随机推荐
Latex compiles Chinese in vscode and solves the problem of using Chinese path
Selenium+msedgedriver+edge browser installation driver pit
Vector types and variables built in CUDA
Pytest (3) parameterize
FE - Weex 使用简单封装数据加载插件为全局加载方法
部署api_automation_test过程中遇到的问题
Selenium memo: selenium\webdriver\remote\remote_ connection. Py:374: resourcewarning: unclosed < XXXX > solution
sprintf_s的使用方法
(第一百篇BLOG)写于博士二年级结束-20200818
Win10桌面图标没有办法拖动(可以选中可以打开可以删除新建等操作但是不能拖动)
Virtualenv and pipenv installation
Pytest (1) case collection rules
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)
CVE-2015-1635(MS15-034 )遠程代碼執行漏洞複現
20201002 vs 2019 qt5.14 developed program packaging
uniapp引入本地字体
Stack (linear structure)
Sqli labs customs clearance summary-page3
Kali latest update Guide
Uploading attachments using Win32 in Web Automation