Базовая безопасность, PHP mySQl

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

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

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

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

Так ли это работает? И он чувствует себя небезопасным, делая все на одной странице.

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

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

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

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

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

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

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

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

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

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

1.- Это хорошая идея, генерирующая пароль при первом входе студентов в свой идентификатор и электронную почту.

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

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

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

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