Поиск пароля - PullRequest
       24

Поиск пароля

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

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

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

Пока у меня есть это.

    if (!empty($_POST['password']))
{


/*connect to database to check password is valid*/
    $user_name = "contains username for database";
    $pass_word = "contains password";
    $database = "name of database";
    $server = "localhost";

    $db_handle = mysql_connect($server, $user_name, $pass_word);
    $db_found = mysql_select_db($database, $db_handle);

    if ($db_found) {

        $uname = quote_smart($uname, $db_handle);
        $pword = quote_smart($pword, $db_handle);

        $SQL = "SELECT * FROM masterpass WHERE password = $password";
        $result = mysql_query($SQL);
        $num_rows = mysql_num_rows($result);

        if ($result) {
            if ($num_rows > 0) {
                continue;
            }
            else {
                $error = true;



  }

Не уверен, правильно ли я поступлю, поэтому любая помощь будет отличной.

Заранее спасибо, Мэтт

Ответы [ 2 ]

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

для начала, сначала вы создаете $pword:

$pword = quote_smart($pword, $db_handle);

и в своем запросе вы используете $password.

$SQL = "SELECT * FROM masterpass WHERE password = $password";

Это не может работать.

Во-вторых, вы должны спросить имя пользователя И пароль в вашем запросе.

Последнее, но не менее важное: никогда не сохраняйте пароль в виде открытого текста в вашей базе данных. Создайте хэш MD5 !

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

Я установил некоторые правила, которые проверяют, что поля заполнены правильно, и я хочу написать код, который будет проверять, заполнено ли поле пароля, а затем проверять его по сохраненным паролям в базе данных.

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

Во-вторых, quote_smart, вероятно, не умнее, чем mysql_real_escape_string. Используйте это вместо этого.

В-третьих, как уже упоминал Саша, сгенерируйте хеш. Я бы не стал использовать MD5, а вместо этого sha1, но даже использование MD5 без соли уже значительно повышает безопасность вашей формы.

Моя мантра о проверке паролей такова: убедитесь, что она длиннее 7 символов, вот и все. Не делайте предположений о том, какой пароль должны использовать люди. Я ненавижу, если я ввожу пароль, и какая-то процедура проверки говорит мне, что я не могу использовать {^ в моем пароле.

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