Android — базовое шифрование паролей php / db

Я установил два простых файла php для функции входа в систему / регистрации в моем приложении для Android.

Я хотел бы знать простой способ заставить его сохранить / записать зашифрованный пароль в базу данных mysql. на данный момент его единственное написание простого текста для пароля.

Код для register.php это:

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];


$statement = mysqli_prepare($con, "INSERT INTO User (username, email, password) VALUES (?, ?, ?)" );
mysqli_stmt_bind_param($statement, "sss", $username, $email, $password);
mysqli_stmt_execute($statement);

mysqli_stmt_close($statement);
mysqli_close($con);

и код для входа в систему:

$password = $_POST["password"];
$username = $_POST["username"];

$statement = mysqli_prepare($con, "SELECT * FROM User WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ss", $username, $password);
mysqli_stmt_execute($statement);

mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID, $username, $email, $password);

$user = array();

while(mysqli_stmt_fetch($statement)) {
$user[username] = $username;
$user[email] = $email;
$user[password] = $password;
}

echo json_encode($user);

mysqli_stmt_close($statement);

mysqli_close($con);

очень простой вопрос, я знаю, но просто учусь. Спасибо

РЕДАКТИРОВАТЬ:

Основываясь на ссылке / ответе Jamesking56, я выступил с этим, но теперь он вообще не пишет в БД:

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];

$passwordHash = password_hash($password, PASSWORD_DEFAULT);
$statement = mysqli_prepare($con, "INSERT INTO User (username, email, password) VALUES (?, ?, ?)" );
mysqli_stmt_bind_param($statement, "sss", $username, $email, $passwordHash);
mysqli_stmt_execute($statement);

mysqli_stmt_close($statement);
mysqli_close($con);

0

Решение

Если вы используете PHP 5.5 или новее, есть несколько встроенных функций для хеширования паролей password_hash() а также password_verify(),

Никогда не используйте MD5 или SHA1 самостоятельно для хеширования пароля поскольку они могут быть полностью изменены, используя радужные столы.

Вы должны использовать механизм хеширования с определенным вами секретом, который дает вам хэши, уникальные для вашего приложения. «Секрет», который вы создаете, никогда не должен передаваться через VCS.

Хорошую статью об этом можно найти здесь: http://www.phptherightway.com/#password_hashing


Для тех, кто использует версии PHP ниже 5.5, вы можете использовать crypt():

http://php.net/manual/en/function.crypt.php

PHP 5.4 не будет поддерживаться с 14 сентября 2015 года, поэтому рассмотрите возможность обновления до 5.5.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru