Базовая безопасность, PHP mySQl - PullRequest
1 голос
/ 24 апреля 2010

Итак, я делаю основную страницу входа. У меня есть хорошее представление о том, что делать, но я до сих пор не уверен в некоторых вещах.

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

Но где я могу создать пароль? Нужно ли вручную добавлять пароль (который является просто случайно сгенерированной строкой) в mySQL для всех студентов? И я полагаю, чтобы отправить пароль студенту; как я узнаю, что отправить студенту, если пароль зашифрован?

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

Это так должно работать? И это небезопасно делать на одной странице.

Извините за скучный вопрос новичка. Я нахожу все это одновременно и феноменальным (шифрование AES и RSA: O)

Ответы [ 4 ]

4 голосов
/ 24 апреля 2010

Несколько вещей здесь:

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

  2. Не используйте MD5, это просто не очень безопасный хеш. Если возможно, используйте один из вариантов SHA.

  3. Не просто хэшируйте пароль, вы тоже захотите его «засолить». В основном это включает добавление случайной строки к паролю до того, как вы ее хешируете, и сохранение этой случайной строки где-нибудь, где вы сможете извлечь ее позже (чтобы вы могли проверить хеш, когда пользователь вводит свой пароль). Это помогает предотвратить атаки на предварительно вычисленные словари.

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

1 голос
/ 24 апреля 2010

Ваш PHP должен сгенерировать пароль во время регистрации. Отправьте студенту пароль по электронной почте, затем запустите его через функцию хеширования (md5 () в порядке, но sha1 () лучше) Сохраните хеш в БД и сбросьте оригинальный пароль. Таким образом, даже вы не можете увидеть, что это такое.

Когда пользователь входит в систему, хэшируйте его введенный пароль и сравнивайте его с хешем, хранящимся в БД. Если они совпадают, пользователь ввел правильный пароль.

1 голос
/ 24 апреля 2010

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

0 голосов
/ 24 апреля 2010

При добавлении к предыдущим ответам, в зависимости от выбранного вами метода хеширования, процесс выглядит следующим образом:

1.- Генерация пароля - это хорошая идея, когда учащиеся вводят свой идентификатор и адрес электронной почты в первый раз.

2.- Когда они отправляют свои данные, вы получаете их и случайным образом генерируете пароль, используя любой метод хеширования, который хотите, и сохраняете его в своей БД.

3.- Когда они хотят войти, вы запрашиваете их идентификатор и пароль, используйте метод хеширования для введенного пароля и сравните его с тем, который хранится.

4.- Если они теряют свой пароль и метод хеширования не может быть отменен или отменен, вам необходимо внедрить метод для создания временной ссылки, отправляемой на электронную почту студента, для создания нового пароля, поскольку нет никакого способа чтобы восстановить старый. Если метод хеширования можно изменить, тогда проблем нет, просто удалите его и отправьте на электронную почту студента.

Надеюсь, это немного прояснит процесс:)

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