php - 会话管理系统
问题描述
我正在创建自己的会话管理系统,我想在使用 session_create_id() 函数开始会话之前创建自己的自定义 ID,虽然我不确定前缀是如何工作的,但我遇到的问题是我用前缀回显 session_create_id 我将看到带有会话 ID 的前缀,尽管当我将此 session_create_id 输入到 session_id 函数中时,我在回显时只看到标准的 26 长度 ID。我在https://wiki.php.net/rfc/session-create-id上找到的这篇文章确实解释了为什么我只看到我在配置文件中设置的标准长度。但我不确定我是如何知道这个前缀存在的,本质上它是否真的添加了一个更安全的 session_id。
这篇文章中的这些信息满足了我的一些好奇心。
注意:前缀长度不被视为 session.sid_length 的一部分。会话 ID 长度变为“前缀长度”+ session.sid_length。总长度必须小于 256 个字符。
代码:
//SessionRegeneration
function sess_regenration(){
if (session_status() == PHP_SESSION_NONE){
//CreateRandomStringForPrefix
$RandomizerForPreFix = str_split("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
shuffle($RandomizerForPreFix);
$EmptyStringToAppenRandomizer = '';
foreach($RandomizerForPreFix as $Element ){
$EmptyStringToAppenRandomizer .= $Element;
}
//CreateNewSessionIdWithPrefix
$CreatedId = session_create_id($EmptyStringToAppenRandomizer);
session_id($CreatedId);
//StartSession
session_start();
echo session_id();
}
}
解决方案
我刚刚意识到,为了使用 session_create_id() 功能,我必须关闭严格模式,虽然现在我会遇到未经授权的会话 ID 的问题......无论如何能够创建这个会话 ID 并且仍然不允许未经授权的会话。
推荐阅读
- python - 如何正确创建指向 Python 解释器的符号链接?
- react-native - 无法在 react-native 中从 facebook 注销
- parallel-processing - 多核并行计算,用于与程序独立运行的数据
- git - jenkins 主从神器路径并部署到神器
- r - 在 R 中运行 foreach 而不返回任何值
- python - 正则表达式没有产生所需的匹配
- php - 无法在 PHP 中打开 COM 端口
- java - 如果我有 pid,是否可以创建 Process 类的实例?爪哇
- python - 将数量 X 随机分配给 n 个项目
- linux - CAN socketCAN - 文件传输的可靠性如何