Пожалуйста, быстро проверьте эту реализацию PHP + СОЛЬ - не работает? - PullRequest
1 голос
/ 26 ноября 2010

Опираясь на учебники для реализации базовой регистрации пользователя + войти в систему с солью. На данный момент я использую это для стадии регистрации:

define('SALT_LENGTH', 9);

function generateHash($plainText, $salt = null)
{
    if ($salt === null)
    {
        $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);
    }
    else
    {
        $salt = substr($salt, 0, SALT_LENGTH);
    }

    return $salt . sha1($salt . $plainText);
}

$newpass = generateHash($_POST['newpass']);

followed by:

$sql = "INSERT INTO user SET
              userid = '$_POST[newid]',
              password = PASSWORD('$newpass'), ... etc"

Это отлично работает.

Теперь я хочу сравнить входной пароль для проверки на равенство (в отдельном файле контроля доступа):

define('SALT_LENGTH', 9);

function generateHash($plainText, $salt)
{

    $salt = substr($salt, 0, SALT_LENGTH);

    return $salt . sha1($salt . $plainText);
}

$sql = "SELECT password FROM user WHERE
        userid = '$uid'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);


$comparepwd = generateHash($pwd, $row['password']);


if (mysql_num_rows($result) == 0 || $comparepwd != $row['password']) {

//access denied, unset session variables
}

В принципе, я считаю, что это должно работать. Я довольно новичок в PHP / MySQL, поэтому я был бы чрезвычайно признателен, если бы вы посоветовали, почему он не работает. Большое спасибо!

РЕДАКТИРОВАТЬ: Просто понял, это потому, что

INSERT INTO user SET
                  userid = '$_POST[newid]',
                  password = PASSWORD('$newpass')

ПАРОЛЬ ('$ newpass') делает дальнейшее хождение MySQL?

1 Ответ

2 голосов
/ 26 ноября 2010

Да, функция пароля - это односторонний хэш, и вы не должны его использовать на самом деле!

http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html#function_password

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