2010-11-16 3 views
0

Я создаю часть входа в приложение CodeIgniter, используя simple login class в качестве отправной точки. Все работает нормально, но я не уверен в различиях между типами шифрования и которые можно использовать.Безопасный вход PHP CodeIgniter

Я пошел для использования функции крипт() с помощью пароля пользователя в виде соли (через md5), например, так:

$pass == crypt($_POST['login_password'], md5($_POST['login_password']))

Является ли этот метод хорошо, или есть вопиющая ошибка в этом подходе? Это кажется безопасным, поскольку ни пароль, ни соль не хранятся в базе данных. Или это немного очевидно?

Заранее спасибо.

+0

Можете исправить вашу ссылку;) –

ответ

3

http://php.net/manual/en/faq.passwords.php

Это правильный способ реализации паролей.

Все ниже не имеет значения.


С, что вы имеете право есть, простой

$pass = md5($_POST['login_password'] . "somerandomchars"); 

будет достаточно в большинстве случаев, если высокая степень безопасности не требуется.

Если вы используете CodeIgniter, я настоятельно рекомендую изучить плагин аутентификации TankAuth.

+0

Hi @castis! спасибо за Ваш ответ. Я начал с использования хэша md5, но было ли впечатление, что соль должна использоваться для предотвращения использования радужных столов? Спасибо за ссылку, хорошо выглядит, я проверю это. – Robimp

+0

Да, вы должны обязательно использовать соль для защиты паролей. Взгляните на эту другую запись SO. http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords – castis

+0

Ах, да, это выглядит довольно подробно. Спасибо, зеленый тик на пути ... – Robimp

1

В современных приложениях пароль веб-сайта не сохраняется с использованием crypt. Использование значения хэша с солью намного безопаснее (если кто-то ломается в ваш дБ, пароль отсутствует. Только хэш пароля, который они не могут использовать для входа в систему), и крипты действительно не очень безопасны. К сожалению, у MD5 есть проблемы, поэтому я бы предложил использовать SHA512 как хеш.

3

Существует также встроенная библиотека шифрования, предоставляемая codeigniter. Вы обеспечиваете "соль" в вашей конфигурации (приложение/Config/config.php) $ конфигурации [ 'encryption_key']

Несмотря на то, что может быть "расшифрованы", это вполне безопасно:

$this->load->library('encrypt'); 
//encryption 
$pass = $this->encrypt->encode($this->input->post('login_password')); 
+0

Что я не знал, это выглядит неплохим вариантом. – Robimp

+3

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

+2

Шифрование бессмысленно, поскольку оно может быть расшифровано. Метки md5, по крайней мере, должны быть разбиты, но использование соли и, возможно, даже sha1 вместо этого делает вещи более безопасными. –

1

используйте $pass = do_hash($this->input->post('password')); и включите security_helper в свой autoload.php

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