Я хочу разрешить использование специальных символов в пароле, однако я хотел бы знать: безопасно ли использовать нетронутый пароль от $_POST
а затем сохранить его хэш в базе данных?
Как это:
password_hash($_POST['password'], PASSWORD_BCRYPT)
а также
password_verify($_POST['password'], $hashFromDatabase)
Имя пользователя будет подтверждено для буквенно-цифровой, и оба хранятся в базе данных через PDO?
И да и нет. Хотя у вас не будет никаких проблем со специальными символами, вы можете с длиной. Согласно руководство:
предосторожность
Использование PASSWORD_BCRYPT для параметра algo приведет к
параметр пароля усекается до максимальной длины 72
персонажи.
Теперь усеченные пароли всегда будут совпадать, но вы можете дать пользователям ложное чувство безопасности, так как пароли длиной более 72 символов усекаются.
Немного гипотетической ситуации, хотя …
Да, это безопасно использовать $_POST['password']
переменная непосредственно в качестве входа password_hash()
функция, потому что BCrypt даже работает с двоичным вводом. Выходные данные функции — это хеш-строка, которая не может содержать никаких «вредных» символов, связанных с SQL-инъекцией.