2013-09-04 2 views
0

Что использовать для защиты паролем?Защита паролем PHP - что осталось?

Будучи новичком в этом (и вообще кодировании), я рассматривал всевозможные учебные пособия, статьи и т. Д. О PHP и безопасности в отношении паролей. Это привело к разным решениям при использовании mysql db и php. К сожалению, все эти разные статьи и/или учебники, похоже, противоречат друг другу. Некоторые говорят, что md5 отлично подходит для «основного» пользователя, другие рекомендуют sha1 или crypt(). Теперь, насколько я вижу, только склеп() кажется «жизнеспособным» решением. Использование md5 не совсем безопасно, имея всевозможные сайты онлайн-расшифровки. Использование sha1, даже с солью, не кажется лучше. Короткая демонстрация дается здесь:

http://www.youtube.com/watch?v=lrGMxH8WNZ8

Все это приводит меня к моему вопросу. Что было бы лучшим решением для сайта форума с поддержкой mysql? В принципе, по крайней мере, он не содержит никакой «личной информации» (не мог вспомнить правильный английский термин). Нужно ли делать какое-то SSL-решение или ......?

спасибо.

+1

[bcrypt] (https://en.wikipedia.org/wiki/Bcrypt) довольно прост. –

+0

Возможный дубликат [Secure hash and salt for PHP passwords] (http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords) – cmorrissey

ответ

2

Все будут собирать bcrypt, который является твердым. но я предпочитаю новую хеширующую функцию PHP5 API, которая является стандартной в php 5.5.

прочитал об этом here

Это супер легко и от того, что я могу сказать, супер безопасной.

Просто установите на 60 длины VARCHAR в вашей БД и ваш набор

$hash = password_hash($password, PASSWORD_BCRYPT); 

и проверить:

if (password_verify($password, $hash)) { 
    // password valid! 
} else { 
    // wrong password :(
} 

Поскольку не все хостинг-серверы предлагают 5.5 вы можете получить класс here

Что касается SSL, рекомендуется.

+0

Я этого не заметил. Спасибо :) Не могу дать вам ничего +, извините. – user1585966

2

md5 и ша не должны быть использован на самом деле - http://www.php.net/manual/en/faq.passwords.php#faq.passwords.fasthash

Кроме того, хранить ли вы скучные письменную информацию деликатных или государственные секреты, вы должны использовать наиболее безопасные методы. Что, если ваш план сайта изменится после того, как все это будет реализовано, и вдруг вам нужно хранить конфиденциальные данные?
Что делать, если кто-то взломает вашу нечувствительную базу данных по небезопасным методам и вытирает все? Это может быть не более, чем боль, теряющая все эти данные и необходимость восстановления формы, но для меня этого само по себе достаточно.
Кроме того, поскольку кто-то взломал вашу БД, что, если они вернутся позже и сделают это снова, вам все равно придется обновлять свои методы входа.

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

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

Затем, когда пользователь входит в систему, вы просто используете встроенную функцию, чтобы проверить введенный вами пароль от формы входа в форму, указанную в БД, и библиотека работает с хешем/солью/etc и проверяет их. Если матч регистрирует их, в противном случае нет.

+0

Спасибо. Я тоже смотрел на Blowfish (забыл упомянуть об этом). Я должен согласиться с вами в отношении всех возможных угроз, которые могут повлечь за собой создание плохо обеспеченного сайта. «Лучшей практикой» я должен понимать это как термин, включающий «методологический» аспект практики в качестве программиста? (не знаю, если это имело смысл :) – user1585966

+0

В значительной степени. Используйте самые современные методы (PHP будет улучшать их с течением времени), но вы должны использовать их правильно, безопасно и т. Д. Нельзя использовать crypt и Blowfish и htaccess в вашей папке include/library для блокировки каждого один, если вы не утруждаете себя проверкой введенных пользователем данных. Это все необходимо. У вашего дома может быть самый сильный замок в мире, который нельзя раскрыть, если вы не запираете его, когда выходите ... – James

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