Это хороший способ создать уникальный URL-токен в PHP? - PullRequest
0 голосов
/ 10 октября 2010

Мне нужно предоставить доступ к определенной странице веб-сайта незарегистрированным посетителям, когда администратор отправляет ссылку с токеном (как мы часто видим для активации учетной записи или обновления пароля).

Очевидно,токен должен быть уникальным, так как сам токен будет определять то, что видно посетителю (токен будет храниться в БД MySQL с предоставленным доступом, статусом, сроком действия и т. д.)

Это то, что у меня есть,объединены из нескольких источников:

$key = '#}~*$/"$?&*(."*/[!%]/${"/}';
$unique = uniqid();       
$token = $unique.substr(hash('sha512',$unique.$key.microtime()), 0, 19);

В результате получается строка из 32 символов, первые 13 из которых могут быть обратными, чтобы получить созданное время, и последние 19 для добавления уникальности.

Является ли это уникальным / достаточно безопасным ??1010*

Достаточно 32 для маркера URL .?

1 Ответ

2 голосов
/ 10 октября 2010

Это кажется намного более безопасным, чем вам когда-либо может понадобиться (не знаю точно, какие данные вы пытаетесь сохранить). Если вы хотите, вы можете сделать токен пригодным для использования только для одного сеанса или для любого количества сеансов, которое, по вашему мнению, будет достаточно для посетителя. Вы можете сделать так, чтобы, если они используют токен, который им дали в одном сеансе, но не заканчивают то, что им нужно сделать, им нужно заставить другого вернуться, если это разумно.

Однако то, что вы делаете, достаточно для безопасности. Единственный способ получить токен - это угадать, и эти токены очень сложно угадать. Не очень большая сделка, если только вы не слишком обеспокоены тем, что пираты получают информацию. Поскольку это URL-токен, он будет виден всем в электронном письме, которое вы отправляете, или как угодно. Вы, очевидно, должны сделать это видимым.

Единственный способ сделать его еще более безопасным - дать пользователю токен, который он может использовать для создания собственного надежного хешированного пароля. Тогда вы не храните пароль, и он становится более безопасным.

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