Php Sessions和session_create_id(),前缀和严格模式配置设置为on
我的目标是创建一个更安全的会话id。我正在尝试在现有会话上添加一个sha1哈希前缀,尽管我现在担心的是,为了做到这一点,我必须关闭严格模式。在保持严格模式打开的同时,是否有办法做到这一点Php Sessions和session_create_id(),前缀和严格模式配置设置为on,php,session,Php,Session,我的目标是创建一个更安全的会话id。我正在尝试在现有会话上添加一个sha1哈希前缀,尽管我现在担心的是,为了做到这一点,我必须关闭严格模式。在保持严格模式打开的同时,是否有办法做到这一点 function sess_regenration(){ if (session_status() == PHP_SESSION_NONE){ //CreateRandomStringForPrefix $RandomizerForPreFix = str_spl
function sess_regenration(){
if (session_status() == PHP_SESSION_NONE){
//CreateRandomStringForPrefix
$RandomizerForPreFix = str_split("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
shuffle($RandomizerForPreFix);
$EmptyStringToAppenRandomizer = '';
foreach($RandomizerForPreFix as $Element ){
$EmptyStringToAppenRandomizer .= $Element;
}
//HashShuffle
$HashedValue = sha1($Element);
//CreateNewSessionIdWithPrefix
ini_set('session.use_strict_mode',0);
$CreatedId = session_create_id($HashedValue);
session_id($CreatedId);
//StartSession
session_start();
$_SESSION['name'] = htmlentities($_POST['name']);
echo session_id();
}
}
sess_regenration();
}
有一种更简单的方法。php.ini中有一个名为session.hash_函数的设置,它接受一个数值。要获得所需的值,请在脚本中单独运行hash_algos()函数。这将为您提供所有可用哈希算法的数组。假设它将sha1作为数组中的第四个值,则将它在数组(3)中的索引作为要使用的session.hash_函数,以便在示例中读取:
session.hash_function 3
在对php.ini进行更改后,不要忘记重新启动服务器
在调用session_start()之前,您可能需要编写一小段代码来运行,以检查hash_algos()返回的数组中sha1的索引,并通过ini_set()设置session.hash_函数的值您是否建议从脚本运行所有内容,而不是更改php.ini文件中的设置?从脚本运行会给您带来一些灵活性,因为您不必每次使用新服务器或更改可用算法列表时都编辑php.ini文件