Sessions и session_create_id () с префиксом и конфигурацией строгого режима, установленной на - PullRequest
0 голосов
/ 01 июля 2018

Моя цель - создать более безопасный идентификатор сеанса. Я пытаюсь добавить префикс 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();
    }

1 Ответ

0 голосов
/ 01 июля 2018

Есть более простой способ сделать это. В php.ini есть настройка с именем session.hash_function, которая принимает числовое значение. Чтобы получить необходимое вам значение, запустите функцию hash_algos () в скрипте самостоятельно. Это даст вам массив всех доступных алгоритмов хеширования. Скажем, в качестве четвертого значения в массиве указано sha1, вы возьмете его индекс в массиве (3) и передадите его для session.hash_function в качестве значения, которое будет использоваться для чтения в примере:

session.hash_function 3

Не забудьте перезагрузить сервер после внесения изменений в php.ini

Возможно, вы захотите написать небольшой кусочек кода для запуска перед вызовом session_start (), чтобы проверить индекс sha1 в массиве, возвращенном hash_algos (), и установить значение для session.hash_function с помощью ini_set ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...