Сравнение паролей MySQL из PHP - PullRequest
1 голос
/ 02 августа 2011

ДЕНЬ ТАК. В основном у меня есть страница с формой входа в систему, где пользователю предлагается ввести свое имя пользователя и пароль. Затем я сопоставляю эти имя пользователя и хешированную версию пароля с базой данных паролей в MySQL.

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

  • Пользователь вводит имя пользователя + пароль.
  • Я пересылаю эту информацию в MySQL через хранимую процедуру.
  • Хранимая процедура возвращает TRUE / FALSE (1 или 0 не имеет значения), если найдено совпадение.

Большое спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Я не совсем уверен, что вы ищете, но если я правильно понял вопрос, вы хотите сделать что-то вроде этого:

SELECT password FROM users WHERE username = '$username';

, а затем сравнить пароли с PHP, и выВы обеспокоены тем, что это может стать проблемой безопасности.

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

SELECT COUNT(*) FROM users WHERE username = '$username' AND password = '$hashedPassword';

Если count == 1, пользователь дал правильный пароль.Вы можете видеть, что MySQL не дает действительный пароль в любой момент, если пароли не совпадают.Даже если это произойдет, для хакера почти невозможно получить доступ к этой информации.Если они могут, они уже взломали ваш сервер, и это наименьшая из ваших проблем.

0 голосов
/ 02 августа 2011

Просто используйте mysql_real_escape_string при отправке учетных данных в вашу базу данных.Это предотвратит внедрение SQL.

<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
?>

http://www.php.net/manual/en/function.mysql-real-escape-string.php

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