Intereting Posts
Помощник формы трюков создавая основной класс, который расширяет другой ключевой класс codeigniter Загрузка большого файла Apache / PHP (> 2Gb) Как выполнить привязку LDAP SASL к Active Directory с использованием GSS-API в PHP из Windows? Может ли facebook connect иметь профиль холста тоже? Drupal 6: Views: перечисление таксономических терминов с помеченными узлами под Вставить несколько строк из массива, сохраненного в сеансе в таблицу? Могу ли я использовать максимальное использование процессора для php-скрипта? Что такое «ANSI as UTF-8» и как я могу сделать fputcsv () генерировать UTF-8 с спецификацией? Размещение заголовка PHP-заголовка не работает – почему? Вызов функции-члена bind_param () для не-объекта, не работающего внутри функции, вызванного из другой функции PHP Regexp отрицательный lookahead Хорошая форма безопасности – нет CAPTCHA PHP readdir и сортировка Удалить часть строки после определенного символа

Каким образом лучше всего использовать хэш-пароль?

Я работаю над веб-сайтом, который должен быть очень безопасным для пользователей, поэтому мне нужны хэш-пароли. Обычно я использую MD5, но я читал, что он больше не безопасен. Поэтому я попробовал PHPass, но потом я прочитал, что он также был взломан. Поэтому я пробовал password_hash() PHP 5.5, но я использую HostGator, а PHP – 5.4. Также я хочу иметь возможность добавлять соль, не зная ее (например, time() * userid() ), например, в password_hash() .

Сила хэша очень важна для меня, потому что я хочу быть на 100% уверенным, что мои пользователи в безопасности. Так есть ли способ, который очень безопасен, а не что-то вроде SHA, который скоро будет взломан?

Related of "Каким образом лучше всего использовать хэш-пароль?"

Используйте эту библиотеку, которая обеспечивает прямую совместимость с функциями password_* .

Пример использования:

 require_once("password.php"); // imports the library, assuming it's in the same directory as the current script $password = "HelloStackOverflow"; // example password $hash = password_hash($password, PASSWORD_BCRYPT); // here's the hash of the previous password $hash = password_hash($password, PASSWORD_BCRYPT, array("cost" => 10)); // you can set the "complexity" of the hashing algorithm, it uses more CPU power but it'll be harder to crack, even though the default is already good enough if (password_verify($password, $hash)) { // checking if a password is valid /* Valid */ } else { /* Invalid */ } 

PHP поставляется со встроенными алгоритмами хеширования, такими как MD5, SHA1 и т. Д. Однако с точки зрения безопасности не рекомендуется использовать эти функции для хэш-паролей, так как их можно легко разбить с помощью атаки с помощью bruteforce с помощью таких инструментов, как Passwordpro.

Лучше, если вы используете соление, чтобы защитить свои пароли. Ниже приведен пример:

 $password = 'yourpassword'; $salt = 'randomstr!ng'; $password = md5($salt.$password); 

Еще лучший способ получения соли заключается в том,

 $password = 'yourpassword'; $salt = sha1(md5($password)); $password = md5($password.$salt); 

Преимущество состоит в том, что таким образом значение соли является случайным, и оно изменяется для каждого пароля, что делает невозможным его разрыв.

Взгляните на http://php.net/manual/de/function.crypt.php

Вы должны рассмотреть возможность использования солей для предотвращения нападений с радужным столом. Вы можете найти учебник здесь: http://www.yiiframework.com/wiki/425/use-crypt-for-password-storage/

Я понимаю, что лучше всего использовать библиотеку для управления паролями.
Если вы не можете использовать php 5.5, вы можете попробовать эту библиотеку, которая работает для php5.3 +, посмотрите на этот проект:

http://rchouinard.github.io/phpass/