-1

Webサイトへの登録に使用する次のPHPコードがあります。セキュリティのためにパスワードをハッシュしようとしていますが、ダミーの登録を送信すると、phpMyAdminでパスワードがハッシュされません。それらは正常に見えます。これが私のコードです:

<?php

//get the values from the form
$Name = $_POST['name'];
$Username = $_POST['username'];
$Password = $_POST['password'];
$RepeatPassword = $_POST['repeatpassword'];

//encrypt the passwords
md5($Password);
md5($RepeatPassword);

//query the database
$query = "INSERT INTO users VALUES ('', '$Name', '$Username', '$Password')";

if (!mysql_query($query)) {

die('Error ' . mysql_error() . ' in query ' . $query);
} 

//check passwords match
if ($Password !== $RepeatPassword) {
echo "Your passwords do not match. <a href='login.php'>Return to login page</a>";

}

//check to see if fields are blank
if ($Name=="") {
echo "Name is a required field. <a href='login.php'>Return to login page</a>";
}

else if ($Username=="") {
echo "Username is a required field. <a href='login.php'>Return to login page</a>"; 
}

else if ($Password=="") {
echo "Password is a required field. <a href='login.php'>Return to login page</a>";
}

else if ($RepeatPassword=="") {
    echo "Repeat Password is a required field. <a href='login.php'>Return to login page</a>";
}

else {
    $_SESSION["message"] = "You have successfully registered! Please login using your username and password.";
    header("Location: login.php");
}
?>

私がオンラインで読んだチュートリアルはすべて、上記のようにそれを行うと言っています。2行のmd5コードをさまざまな場所に配置しようとしましたが、役に立ちませんでした。

4

3 に答える 3

9
md5($Password);
md5($RepeatPassword);

このコードは基本的に何もしません。あなたが欲しい:

$Password = md5($Password);
$RepeatPassword = md5($RepeatPassword);

しかし、最終的には、MD5はセキュリティにあまり効果がありません。bcryptを検討し、関数の使用をやめて、mysql_*SQLインジェクション攻撃について学び始めてください。

于 2012-12-07T21:43:05.610 に答える
2

関数の戻り値については何もしていません。そのはず:

$Password = md5($Password);

$RepeatPassword = md5($RepeatPassword);

于 2012-12-07T21:42:48.930 に答える
-2

md5を変数に割り当てていないため、機能していません。このようなことをします:

$Password = md5($Password);

$RepeatPassword= md5($RepeatPassword);

于 2013-04-29T01:35:29.993 に答える