2015-11-03 2 views
1

В настоящее время я работаю над входом в PHP, пароль зашифрован в другом файле с использованием password_hash('password',PASSWORD_BCRYPT), я фактически извлекаю данные из mySQL и получаю данные из вызова AJAX, но я есть объявленные переменные для показа моей проблемы:Пароль не работает с паролем hash BCRYPT

<?php 
require "modulos/conexion.php"; 
session_start(); 
if (!isset($_SESSION['username']) && !isset($_SESSION['userid'])) { 
    $usuario = "mariano overs"; 
    $pass = "1234"; 
    $passdb = '$2y$10$A1nr4od4OjP0N1hNoB9Seur3OsWzU3ufT4G82XNTLV3'; // equivalent of password_hash('1234',PASSWORD_BCRYPT), this is value from DB 
    $sql = 'SELECT id_usua, co_usua, ds_pass FROM dbfar_cabusuarios WHERE co_usua="' . $usuario . '" LIMIT 1'; 
    if ($res = mysqli_query($GLOBALS['conexion'],$sql)) { 
     if (mysqli_num_rows($res) == 1) { 
      $usuario = mysqli_fetch_array($res, MYSQLI_ASSOC); 
      echo "Contrasena guardada: ". $pass . "<br />Contrasena de la base: " . $usuario['ds_pass'] . "<br />"; 
      if (password_verify($pass, $passdb)){ 
       $_SESSION['username'] = $usuario['co_usua']; 
       $_SESSION['userid'] = $usuario['id_usua']; 
       echo "INICIO SESION CORRECTAMENTE"; 
      } 
      else{ 
       echo "INICIO SESION NO CORRECTO"; 
      } 

     } else { 
      echo "REGISTROS NO CORRECTOS"; 
     } 
    } else { 
     echo "USUARIO NO EXISTE"; 
    } 
} 

Так как я знаю, что получить нужное значение из базы данных, это не проблема, но на password_verify функции. Они неправильно утверждены. Есть ли дополнительная ценность, которую мне нужно включить на password_verify?

+0

Нет, вы используете его правильно. Есть ли ошибки в вашем журнале ошибок? –

+1

Какова длина и тип столбца паролей? –

+0

* «У меня есть мои деньги на этом Сэме» *^@JayBlanchard хочет принять 10 к 1 шансов?;-) –

ответ

2

Хешированный пароль содержит строку длиной 60-72 символов.

Столбец должен быть достаточно длинным, чтобы разместить хэш.

Пособие предлагает 255 для того, чтобы приспособить для будущего.

Вам нужно будет начать и изменить колонку так, чтобы она была достаточно длинной.

Сделайте это, сохраните новый хэш и начните сначала.

60 символов: (из инструкции)
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

и у вас есть 50 долго: (там вы идете, слишком короткий)

$2y$10$A1nr4od4OjP0N1hNoB9Seur3OsWzU3ufT4G82XNTLV3

, который говорит мне, что он был усечен ,

В пособии говорится:

Внимание

Использование PASSWORD_BCRYPT как алгоритм, приведет к параметру пароля усекается до максимальной длины 72 символов.

Ссылка:


В качестве дополнительного бонуса:

Ваш код склонен к инъекции SQL. Лучше всего использовать подготовленное заявление.

+0

Это было, по сути, вопрос. Длина поля была 50, изменена на 72 и отлично работает :) –

+0

@Forcefield Рад это услышать, * cheers * –

+0

@Forcefield so, не выяснили, как закрыть это еще? http://meta.stackexchange.com/a/5235/ –

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