как взломать безопасность хеша пароля - PullRequest
0 голосов
/ 06 января 2019

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

это хеш-функция:

    public static function hash_password($password) {
            /* hashing the password */
            $hash     = hash('sha512', $password);

            /* Iterating the hash a few times */
            for($i = 1;$i <= 1000;$i++) {
                $hash = hash('sha512', $hash);
            }

            return $hash;
   }

тогда я сделал это $_POST['password'] = hash_password($_POST['password']);

password : onlytest 
password in hash form : edf566f3f02a6b083db5318d77d06c1fa61e51783f097a7fff84767303832f72489fcf08764f9d4ba6c8d6f4e53c577084d586b2b08c60fbdefdcde2248fbbec 

Ответы [ 3 ]

0 голосов
/ 06 января 2019

Вас может заинтересовать просмотр этого поста о плюсах и минусах "двойного хеширования" пароля и этого FAQ по хешированию пароля .

Хеширование с помощью некоторого алгоритма al пароля и повторное хеширование с помощью алгоритма al, результат хеширования, скорее всего, уменьшит энтропию пароля. Это означает, что разные пароли могут давать один и тот же хэш при обработке hash_password($password).

Вместо того, чтобы реализовывать свои собственные функции хеширования, вы должны по возможности использовать API собственных паролей (начиная с PHP 5.5 и далее). Его ключевая функция, password_hash, генерирует сильную соль для использования с хешем и защищена от большинства атак методом "грубой силы".

РЕДАКТИРОВАТЬ: вы, возможно, захотите придать больше энтропии (= случайности) вашим хешированным паролям, вычислив значение SHA-512 для пароля + случайную соль, а затем password_hash, используя этот хеш. Окончательный код PHP будет выглядеть так:

function generateSalt() {
    // Cryptographically secure function to generate strings
    return random_bytes(64 /* use 64 bytes */);
}
/**
 * Generates a strong SHA-512 hash, for use by passwordSecureHash()
 * @param string $password the plain-text password
 * @param string $salt the salt to generate the hash, to be kept at ALL COSTS - this function will not do it for you!
 * @return string the computed hash.
 */
function sha512(string $password, string $salt) {
    return hash('sha512', $password . $salt);
}
/**
 * Returns the final, secure password hash for storage in database server.
 * @param string $hash the SHA-512 resulting from the sha512() call.
 * @return string the hashed password.
 */
function passwordSecureHash(string $hash) {
    if(strlen($hash) !== 128) {
        // Ensure the SHA-512 hash has 128 characters
        return FALSE;
    }
    // Always let PHP generate the final password salt for you
    return password_hash($hash);
}
0 голосов
/ 06 января 2019

Не отправляйте пароли в куки, также не хэшированные и не зашифрованные. Вместо этого используйте токен:

  1. Отправка имени пользователя и (открытого текста) пароля по защищенному каналу
  2. Сервер отвечает токеном, который в основном является большим хорошим случайным числом
  3. Использовать токен во всех последующих вызовах

Таким образом, вы можете удалить токен и отключить сеанс, тогда пользователю потребуется снова ввести имя пользователя и пароль для входа в систему. Также можно создать функцию «запомнить меня».

При этом, чтобы ответить на ваш вопрос: нет ничего неразрывного.

0 голосов
/ 06 января 2019

Короткий ответ: ты не можешь Читайте об этом для некоторой краткой информации

http://php.net/manual/en/function.password-hash.php

На данный момент password_hash () - это лучшее, что вы можете получить, насколько мне известно, если бы вы могли убрать его из простого вопроса "Stackoverflow", сейчас это не будет хорошим хэшем, это.

EDIT

Вы не можете сломать хеш, НО всегда существует принудительная атака BRUTE, что означает, что ваш пароль будет проверен на все виды паролей, и рано или поздно он его угадает, если только у вашего пользователя нет хорошего пароля или у вас нет система на месте, которая блокирует форму входа, скажем, за 1-2 минуты до повторного входа

У этого чувака есть хорошее видео, его достойные часы https://www.youtube.com/watch?v=7U-RbOKanYs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...