PHP中Session ID的实现原理分析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP中Session ID的实现原理分析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2473字,纯文字阅读大概需要4分钟。
内容图文
![PHP中Session ID的实现原理分析](/upload/InfoBanner/zyjiaocheng/127/e1bdb1cc01a742f6b5e487f2f8e70fd7.jpg)
Session 的工作机制:
为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。
PHPSESSIONID的生产算法原理:
1、hash_func = md5 / sha1 #可由php.ini配置
2、PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器)
从以上hash_func(*)中的数据采样值的内容分析,多个用户在同一台服务器时所生产的PHPSESSIONID重复的概率极低。
另外,黑客如果要猜出某一用户的PHPSESSIONID,则他也必须知道“客户端IP、当前时间(秒、微妙)、随机数”等数据方可模拟。
php.ini配置如下:
; Select a hash function for use in generating session ids. ; Possible Values ; 0 (MD5 128 bits) ; 1 (SHA-1 160 bits) ; This option may also be set 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.com/session.hash-function session.hash_function=0
PHP Session工作原理
以下以cookie传输PHPSESSID描述。
1、客户端请求一个php的服务端地址。
2、服务端收到请求,此次php脚本中包含session_start()
。
3、服务端会生成一个PHPSESSID
。(默认session存储方式为session.save_handler=files
,文件形式存储。生成的session文件名规则即为sess_PHPSESSID
,session文件存在session.save_path
中。)
4、服务端响应首部Response Headers:Set-Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50; path=/
。在客户端生成一个cookie保存此PHPSESSID
。
5、此时,客户端的cookie里面包含了PHPSESSID
,之后客户端的每次请求首部Request Headers
:Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50
。服务端之后每次接收到客户端的请求就都能根据这个PHPSESSID
来找到服务端的session文件,通过对这个session文件的读写操作即实现了session的超全局变量属性。
如果客户端禁用了cookie,由于无法使用cookie传递PHPSESSID
,那么客户端每次请求,服务端都会重新建立一个session文件,而无法通过通过PHPSESSID
来重用session文件,所以session也就失效了。
这种情况可以设置session.use_trans_sid
来传输PHPSESSID
,具体实现方式与cookie的区别就是将PHPSESSID
通过HTTP的GET
传输。每次请求的地址里面都会补全PHPSESSID参数”url?PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50
”来实现。
PHPcli模式通过session_id()使用session
可以通过它来获取当前会话的PHPSESSID,也可以通过它来设置当前的会话PHPSESSID。
PHPcli模式下可以通过设置这个,达到使用session的目的,非常方便。
例如:
<?php // session_id('vingbrv8m64asth0nhplu9gmb7'); session_start(); $_SESSION[md5(rand(100,999))] = rand(100,999); var_dump($_SESSION);
推荐教程:PHP视频教程
以上就是PHP中Session ID的实现原理分析的详细内容。
内容总结
以上是互联网集市为您收集整理的PHP中Session ID的实现原理分析全部内容,希望文章能够帮你解决PHP中Session ID的实现原理分析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。