ession 的工作机制:
为每个访明打一成语问者创建一个唯一的 id (uid),并基于这个 uid 来存储变量。uid 存储在 cookie 中,亦或通过 url 进行传导。
phpssionid的生产算法原理:
1、hash_func = md5 / sha1 #可由php.ini配置
2、phpssionid = hash_func(客户端ip + 当前时间(秒)+ 当前时间(微妙)+ php自带的随机数生产器)
从以上hash_func(*)中的数据采样值的内容分析,多个用户在同一台服务器时所生产的phpssionid重复的概率极低。
另外,黑客如果要猜出某一用户的phpssionid,则他也必须知道“客户端ip、当前时间(秒、微妙)、随机数”等数据方可模拟。
php.ini配置如下:
1
2
3
4
5
6
7
8
9
; lect a hash
function
抗战之真心英雄 for
u
in generating ssion ids.
; possible values
; 0 (md5 128 bits)
; 1 (sha-1 160 bits)
; this option may also be t to the name of any hash
function
supported by
; the hash extension. a list of available hashes is returned by the hash_algos()
;
function
.
; http:
//php.net/ssion.hash-function
ssion.hash_function=0
php ssion工作原理
以下以cookie传输phpssid描述。
1、客户端请求一个php的服务端地址。
2、服务端收到请求,此次php脚本中包含ssion_start()
。
3、服务端会生成一个phpssid
。(默认ssion存储方式为ssion.save_handler=files
,文件形式存储。生成的ssion文件名规则即为ss_phpssid
,ssion文件存在ssion.save_path
中。)
4、服务端响应首部respon headers:t-cookie:phpssid=37vjjasgjdv2ouk1uomhgqkv50; path=/
。在客户端生成一个cookie保存此phpssid
。
5、此时,客户端的cookie里面包含了phpssid
,之后客户端的每次请求首部request headers
:cookie:phpssid=37vjjasgjdv2ouk1uomhgqkv50
。服务端之后每次接收到客户端的请求就都能根据这个phpssid
来找到服务端的ssion文件,通过对桃花心木这个ssion文件的读写操作即实现了ssion的超全局变量属性。
如果客户端禁用了cookie,由于无法使用cookie传递phpssid
,那么客户端每次请求,服务端都会重新建立一个ssion文件,而无法通过通过phpssid
来重用ssion文件,所以ssion也就失效了。
这种情况可以设置ssion.u_trans_sid
来传输phpssid
,具体实现方式与cookie的区别就是将phpssid
通过http的get
传输。每次请求的地址里面都会补全phpssid参数”url?phpssid=37vjjasgjdv2ouk1uomhgqkv50
”来实现。
phpcli模式通过ssion_id()使用ssion
可以通过它来获取当前会话的phpssid,也可以通过它来设置当前的会话phpssid。
phpcli模式下可以通过设置这个,达到使用ssion的目的,非常方便不同网段共享打印机。
例如:
1
2
3
4
5森林防火口号
<?php
// ssion_id('vingbrv8m64asth0nhplu9gmb7');
ssion_start();
$_ssion
[md5(rand(100,999))] = rand(100,999);
var_dump(
$_ssion
);
明确的学习思路能更高效的学习
点击加入该群学习
本文发布于:2023-04-07 20:42:59,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1b642c8c819ae61b45d8d25cdb831b5a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP中Session ID的实现原理分析.doc
本文 PDF 下载地址:PHP中Session ID的实现原理分析.pdf
留言与评论(共有 0 条评论) |