이 로그인 시스템은 안전한가요?이 로그인 시스템은 안전합니까?
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' 변수는 쿼리에서 사용되기 전에 이스케이프되어야합니다. 또는 전체 데이터베이스를 SQL 인계로 쉽게 삭제할 수 있습니다. –