Создание безопасного входа - PullRequest
6 голосов
/ 13 июля 2009

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

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

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

Какой тип шифрования используется с HTML <input type="password">?

Как сохранить пользователя во время посещения моего сайта?

Как я могу безопасно проверить, соответствует ли этот пароль имени пользователя?

Я занимаюсь PHP уже год, я просто еще не изучил эту часть, поэтому было бы приятно узнать.

Ответы [ 4 ]

11 голосов
/ 13 июля 2009

Какой тип шифрования используется с html <тип ввода = пароль> ??

None. Входные данные просто замаскированы для защиты от атак «глядя на монитор».

Если вы хотите обеспечить безопасность, передайте свои данные через HTTPS (HTTP с SSL).

Как сохранить пользователя во время посещения моего сайта?

Большинство людей используют куки.

Как я могу безопасно проверить, соответствует ли этот пароль имени пользователя ??

Безопасно

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

Проверьте

Преобразуйте представленный пароль в соответствующий хеш, затем сравните как обычно. Предполагая, что вы храните данные в базе данных, просто ВЫБЕРИТЕ ОТ пользователей, ГДЕ пользователь =? И пароль =? и посчитайте количество строк, которые вы вернетесь.

2 голосов
/ 13 июля 2009

Я отвечу на вопрос о защите паролем вашего вопроса.

Нет встроенного шифрования с типом ввода пароля. Браузер отправит его в виде простого текста, как и все остальное. Есть два способа защитить пароль.

Первый - настроить систему запроса / ответа , но для этого потребуется Javascript для работы. Обычно вы берете пароль пользователя, применяете функцию хеширования, если она хранится на сервере, а затем берете токен запроса сервера и заполняете значение пароля для нового хэша. Сервер примет значение пароля и применит вызов. Если они совпадают, пароль верен, и никто не может узнать, каким был настоящий пароль. Для этого требуется javascript, поскольку хеш должен создаваться на стороне клиента, чтобы этот подход был эффективным.

Другой, более простой вариант, - запрашивать HTTP для входа на сайт.

1 голос
/ 13 июля 2009

Как сказал Дэвид, по умолчанию шифрование паролей отсутствует, используйте https для шифрования.

Чтобы сохранить пользователя в системе, на странице входа проверьте его пароль в сравнении с тем, что хранится в базе данных. Вы должны хешировать свои пароли и хранить хешированный пароль в базе данных (см. crypt ). затем, когда пользователь входит в систему, хэшируйте пароль от пользователя и сравнивайте его с хешированным паролем в базе данных. Когда они совпадают, войдите, иначе вход не удастся. Если ваш БД скомпрометирован, по крайней мере, у него нет паролей.

Чтобы пользователь оставался в системе, после того, как вы проверили пароль, установите переменную в сеансе, т.е.

 $_SESSION[loggedin] = true. 

При каждом запросе проверяйте эту переменную сеанса и, если она истинна, разрешите доступ к странице, если она ложна, перенаправьте пользователя на страницу входа с помощью

 header("Location: /login.php");
0 голосов
/ 13 июля 2009

пароли не зашифрованы. Если вы не хотите хранить незашифрованные пароли (как возвращено формой), вам следует запустить одну из нескольких функций, предоставляемых как php, так и mysql. проверьте php md5 , sha1 или mysql encrypt для хранения паролей.

Затем, чтобы проверить, правильно ли они ввели пароль для входа в систему, вы можете использовать любой метод шифрования для их ввода, извлечь хешированный пароль из базы данных и сравнить их. (Кроме того, посмотрите на солить пароли )

Для постоянного сеанса входа в систему вы можете использовать переменную php $ _ SESSION . или setcookie ()

...