Очень важно правильно обрабатывать пароли в вашем приложении. Недавно прочитав руководство CI, я нашел полезным краткое изложение CodeIgniter об обработке паролей. Поделитесь этим списком с вами, он расскажет вам, что делать и чего не делать.
Никогда не храните пароли в открытом тексте. Всегда используйте алгоритмы хэширования для обработки паролей.
Никогда не используйте Base64 или другую кодировку для хранения паролей. Это то же самое, что хранить пароли в открытом тексте, используя хэш вместо кодирования. Кодирование и шифрование являются двусторонними процессами, а пароли являются конфиденциальными и должны быть известны только их владельцам. Этот процесс должен быть односторонним. Для этого используется хэш. Хэш никогда не был решен, но есть декодирование для кодирования и дешифрование для шифрования.)
Никогда не используйте слабые алгоритмы хэширования или взломанные алгоритмы хэширования, такие как MD5 или SHA1. (Эти алгоритмы слишком старые и доказали свою ошибочность. Сначала они не были предназначены для сохранения паролей. Кроме того, никогда не изобретайте алгоритмы самостоятельно.
Используются только надежные алгоритмы криптографического хеширования, такие как BCrypt. (Он также используется в собственной хэш-функции пароля PHP.)
Никогда не показывайте и не отправляйте пароли в виде открытого текста. (Даже для владельца пароля. Если вам нужна функция “забыть пароль”, вы можете случайным образом сгенерировать новый одноразовый (что важно) пароль и отправить его пользователю.)
Никогда не накладывайте ненужных ограничений на пароль пользователя. Если вы используете алгоритмы хеширования, отличные от BCrypt (который имеет максимальное ограничение в 72 символа), вам следует установить более длинную длину пароля (например, 1024 символа) для смягчения DoS-атак. Но, кроме того, другие ограничения на пароли, такие как разрешение только определенных символов в паролях или запрет на использование определенных символов в паролях, бессмысленны. Это не только не улучшает безопасность, но и снижает ее, и на самом деле для этого нет причин. Пока вы хэшируете пароль, нет никаких технических ограничений или ограничений на хранение.)
Расширенное чтение: Несколько способов обработки пароля PHP: https://segmentfault.com/a/1190000003024932