2016-08-11 3 views
0

У моего хоста-сервера была версия PHP 5.2.17. Я использую случайный токен и использую openssl_random_pseudo_bytes в своей функции.Альтернатива для openssl_random_pseudo_bytes - создание защищенных уникальных токенов

openssl_random_pseudo_bytes($length); 

Попытка запустить этот код из Scott's answer.

Он хорошо работает на моем локальном хосте с более высокой версией php. Кроме обновления моей версии php на сервере. Что является альтернативной функцией для openssl_random_pseudo_bytes?

Обновление: Использование mt_rand, rand or uniqid, как я могу создать безопасные уникальные маркеры? В настоящее время, я использую эту строку кода:

$token = md5(uniqid(rand(), true));

$thetoken = $token.$user_id;

Спасибо за любую помощь!

+0

Вы должны написать свой собственный , используя что-то вроде 'mt_rand()' см: http://www.php.net/manual/en/function.mt-rand.php. Простейшая процедура будет делать, генерируя символы необходимой длины. На токены не должно влиять предупреждение о том, что функция не генерирует криптографически безопасные значения. –

+0

Я пробовал mt_rand() и rand(), но он медленный, и я получаю ограничение на выполнение ошибок. –

+0

Это не то, что я читаю онлайн: http://golearnphp.com/php-rand-vs-mt_rand-and-openssl_random_pseudo_bytes/ –

ответ

1

Я использую 5.6, но также искал способы создания безопасных и уникальных токенов, поскольку я не могу заставить функцию openssl_random_pseudo_bytes работать. Я столкнулся с random_compat paragonie в github, который должен позволить вам использовать random_bytes() и random_int() (оба доступны только с PHP7). Они говорят, что это должно быть возможно использовать с более старыми версиями PHP версии 5.x в теории, хотя они предлагают обновление до текущей стабильной версии php. https://github.com/paragonie/random_compat

Вот ссылка на другой ответ переполнения стека, который предполагает использование random_bytes() как $ token = bin2hex (random_bytes ($ length));

best practice to generate random token for forgot password

А также ссылку я нашел предполагающий paragonie-х random_compat https://akrabat.com/random_bytes-in-php-5-6-and-5-5/ https://paragonie.com/blog/2015/07/how-safely-generate-random-strings-and-integers-in-php

1

Альтернативный способ для openssl_random_pseudo_bytes(10) что-то вроде этого decbin(rand(0,1024)) в PHP 5.X

+0

Даже не похоже –

Смежные вопросы