このログインシステムは安全ですか?このログインシステムはセキュリティ保護されていますか
if ($_POST[$submit]){
$user = $_POST[$user];
$pass = $_POST[$pass];
if ($user && $pass){ //if user and pass is enterered
require("vars.php"); //require MySQL conection settings
mysql_connect($auth_mysql_server, $auth_mysql_user, $auth_mysql_pass); //connect to MySQL
mysql_select_db($auth_mysql_db); // select MySQL database
$pass = md5($pass); // hash password
$query = mysql_query("SELECT * FROM $auth_mysql_table WHERE user='$user'"); // run query
$numrows = mysql_num_rows($query);
if ($numrows == 1){ //check if user exists
$row = mysql_fetch_assoc ($query);
$dbid = $row[$auth_mysql_id_row];
$dbuser = $row[$auth_mysql_user_row];
$dbpass = $row[$auth_mysql_pass_row];
if ($pass == $dbpass){ // if password is equal to the one in the database start session
session_start();
//set session information
$_SESSION['user'] = $dbuser;
header("Location:$auth_loggedin"); // goto logged in page
}
else return (3);
}
else return (2);
mysql_close(); // close MySql connection
}
else return (1);}
どうすれば安全にすることができますか?
私はパスワードをハッシュしましたが、私はmd5が復号化できることを知っていますが、sha1も可能です。また、mysql_close()
が必要ですか?
「bcrypt」を参照してください。http://stackoverflow.com/questions/6863410/php-bcrypt-hashing – scibuff
あなたがここに投稿して以来、そうではありません。 – Zyerah
'$ user'変数は、クエリで使用する前にエスケープする必要があります。または、データベース全体を簡単に削除することができます。 –