Методы хранения информации для входа в базу данных - PullRequest
0 голосов
/ 15 июля 2011

Каков наилучший способ хранения информации для входа в базу данных?Я знаю, что хранение плоского текстового пароля вообще не рекомендуется.Каковы другие методы?Какие функции в PHP доступны для хранения и аутентификации информации для входа в систему, если используются хэш-значения пароля?

Я использую сервер PHP, MySQL, Apache на компьютере с Windows.

Ответы [ 4 ]

2 голосов
/ 15 июля 2011

В этом обсуждении безопасности есть два лагеря:

  1. Не храните пароли в вашей БД.Обычно это означает использование OAuth или его эквивалента.Вам нужно будет сохранить «токен», который однозначно идентифицирует пользователя.Этот «токен» предоставляется выбранной вами службой аутентификации.Служба также обеспечивает аутентификацию.

  2. Сохранение хеш-кода (необратимого) преобразования пароля в БД.Затем процесс аутентификации заключается в сравнении хэшированной версии предоставленного pword с той, что в БД.

Существуют сложности, которые следует учитывать в зависимости от соображений безопасностиЯ думаю, что минимум должен быть реализация соленого пароля.Обычно это что-то вроде:

$hash = sha1(saltThePword($pword));

, где

function saltThePword($pword)
{
    // combine the password with a salt.
    // typically:
    //   $pword.$salt
    //   $salt can be static
    //   $salt can be unique to user (reproducible by a formula)
}

Надеюсь, это поможет.

Боб

1 голос
/ 15 июля 2011

PHP дает вам md5(), sha1() и многое другое.Типичная техника хеширования - это добавление «соли» к вашему простому текстовому паролю, чтобы сделать грубую силу более сложной.

$pass = 'password';
$salt = 'aLongStringCalledASaltIsOftenUsedToMakeHashingMoreSecure';
$hash = sha1(md5($salt . $pass));
0 голосов
/ 15 июля 2011

Мне нравится использовать sha2 для моего алгоритма шифрования, а также убедиться, что ваша соль находится в безопасном месте, а не в вашей базе данных под столбцом или таблицей с именем salt.

0 голосов
/ 15 июля 2011

Сохранить пароль как строку md5 («пароль») и когда вы будете проверять авторизацию пользователя, вы используете запрос

$ res = mysql_query ("ВЫБЕРИТЕ идентификатор, логин, имя ОТ пользователя, ГДЕ логин = '". Mysql_real_escape_string ($ логин). "' И пароль = '". Md5 ($ пароль). "'");

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