当浏览器 禁用 cookie 时 , 我们如何使用 session
PHPSESSIONID的生产算法原理 :
PHP在使用默认的 session.save_handler = files 方式时,PHPSESSIONID的生产算法原理如下:
hash_func = md5 / sha1 #可由php.ini配置
PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器)
从以上hash_func(*)中的数据采样值的内容分析,多个用户在同一台服务器时所生产的PHPSESSIONID重复的概率极低(至少为百万份之一),设想,但台动态Web Server能到2000/rps已经很强悍了。
另外,黑客如果要猜出某一用户的PHPSESSIONID,则他也必须知道“客户端IP、当前时间(秒、微妙)、随机数”等数据方可模拟。
方案一: URL重写
PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。但是Session并不完全依赖Cookie,它还可以通过URL Get自动传递session id的。这需要你设置php.ini中的session.use_trans_sid = 1或者编译时打开了--enable-trans-sid选项,让PHP自动跨页传递session id。当session.use_trans_sid为有效时,session.use_only_cookies一定要设置为无效0
方案二 : 手动拼接URL 将session_id 传递给服务器 ;
本作品采用《CC 协议》,转载必须注明作者和本文链接
你好,请问,如果方案二,手动拼接url这种方式,我有个疑问。 在禁用cookie的情况下,客户端需要先拿到session_id,才能手动拼接访问服务器,那么客户端是通过什么方式拿到session_id的呢?
传参的方式获取