Php Sessions和session_create_id(),前缀和严格模式配置设置为on

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

我的目标是创建一个更安全的会话id。我正在尝试在现有会话上添加一个sha1哈希前缀,尽管我现在担心的是,为了做到这一点,我必须关闭严格模式。在保持严格模式打开的同时,是否有办法做到这一点

 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文件