Нужно хэшировать проверочный URL по электронной почте? - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть форма, которая собирает основную информацию о пользователе. На следующей странице он просит пользователя ввести «проверочный» код, чтобы обеспечить им доступ к указанной учетной записи электронной почты.

Кроме того, в случае, если кто-то случайно покинет сайт перед вводом кода проверки, я предоставлю ссылку с уникальной переменной $ _GET, чтобы они могли проверить свой адрес электронной почты.

Пара вопросов:

  1. Есть ли какой-либо вред в хранении кода проверки на обычном сайте (скажем, код 12345) рядом с адресом электронной почты клиента в базе данных?
  2. Есть ли необходимость 'хэшировать' переменную URL $ _GET для проверки? Я думал о том, чтобы просто создать 64-символьную строку, добавить в конец URL-адреса и проверить значение базы данных (снова сохраненное рядом с адресом электронной почты).

Я бы никогда не сделал то же самое для паролей пользователей (оставьте их открытыми без хэширования), но в этом случае, какой метод является правильным?

редактировать

Кажется, людям нравится идея GUID (хотя я не уверен, насколько она уникальнее, чем, скажем, произвольно генерируемая строка из 64 символов). Представленная ниже функция кажется достаточной?

function getGUID(){
    if (function_exists('com_create_guid')){
        return com_create_guid();
    }else{
        mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
        $charid = strtoupper(md5(uniqid(rand(), true)));
        $hyphen = "-";
        $uuid = "{"
            .substr($charid, 0, 8).$hyphen
            .substr($charid, 8, 4).$hyphen
            .substr($charid,12, 4).$hyphen
            .substr($charid,16, 4).$hyphen
            .substr($charid,20,12)
            ."}";
        return $uuid;
    }
}

1 Ответ

3 голосов
/ 02 сентября 2011

Просто используйте GUID и забудьте об этом!Вы можете сохранить его в другой таблице, если пожелаете.Не нужно его хешировать.

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