2013-05-30 2 views
1

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

Эффективно ли/безопасно шифровать попытки пароля так же, как они были зашифрованы, когда они были сохранены для проверки на валидацию?

Является ли это рекомендуемым способом хранения паролей в приложении php или с использованием CodeIgniter Framework?

+1

Sidenote: посмотри на библиотеках, которые сделаны для аутентификации уже. http://stackoverflow.com/questions/346980/how-should-i-choose-an-authentication-library-for-codeigniter – Kyslik

+0

Возможный дубликат [Как вы используете bcrypt для хэширования паролей в PHP?] (http://переполнение стека.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php) –

+0

@ Kyslik, если бы ваш комментарий был ответом, я бы принял его. Благодаря!! –

ответ

-2

Пароли хранятся в хэшированном формате, поскольку в большинстве случаев не требуется восстановление их в исходную строку. Функция md5 генерирует уникальную строку длиной 32 буквы, которая может быть проверена путем сравнения двух хэшей. Чтобы ответить на ваш вопрос:

  • Да это стандартный способ сохранения паролей. не

  • MD5 уже не обеспечен достаточно, чтобы большинство людей начинают использовать РНР hash

функцию с помощью алгоритма «SHA512» и соли, конечно.

+0

** Не используйте MD5 или thelinjked для функции хеша php **, они не защищены. Лучший, простой и безопасный метод для PHP - это комбинация 'password_hash' и' password_verify'. – zaph

0

два комментария к вашим ответам показывают ссылки на хорошие ответы, чтобы добавить больше. Если вы просто в хэшировании, вы также можете использовать crypt. note crypt отличается от mcrypt, обманул меня однажды. Пример склепа можно найти на laravel3 Hash class. или вы также можете использовать php pass, библиотеку, в которой используется bcrypt на основе Blowfish в стиле OpenBSD.

Добавить благодаря загадочным, ircmaxell также библиотека хэширования проверить его here

+0

OP должен использовать https://github.com/ircmaxell/password_compat –

+0

ohh да, я не знал эту библиотеку, лучше обновляю свой ответ, чтобы включить этот один @cryptic ツ – tomexsans

+0

PHP 5.5 будет содержать встроенную поддержку 'password_hash()' so использование вышеуказанной библиотеки делает ее уже совместимой с ней, поэтому нет необходимости изменять код, чтобы использовать ее, просто удаляйте библиотеку при обновлении, и все в порядке. = o) –

-3

эта функция может быть использование полной к и ..

$this->load->library('encrypt'); 
$this->encrypt->sha1($yaourpassword); 
+2

Это такой плохой способ хранения паролей. SHA1 так же сломан, как MD5, также вы не пользуетесь солью. Вам нужно использовать Bcrypt для хэширования паролей. PHP 5.5 будет иметь встроенную поддержку для него, в противном случае используйте https://github.com/ircmaxell/password_compat –

1

CodeIgniter использует библиотеку "Tank Auth": http://konyukhov.com/soft/tank_auth/ Он включает в себя класс "PasswordHash.php": http://bit.ly/1gahwtT

Пример кода :

require "PasswordHash.php"; 

define("phpass_hash_portable",TRUE); 
define("phpass_hash_strength",8); 

$hasher = new PasswordHash(phpass_hash_strength,phpass_hash_portable); 
if ($hasher->CheckPassword($password_to_check, $original_encoded_password)) { 
    echo "password correct"; 
} else { 
    echo "password incorrect"; 
} 
1

Не используйте md5 или base64. Sha1 также нарушен. Лучше использовать bcrypt.

Вы можете использовать эту library с CodeIgniter для проверки Bcrypt паролей

Смежные вопросы