Phi*_*hil 4 php security ajax jquery login
我刚刚启动PHP和mySQL,需要知道这是否"安全".登录信息通过AJAX(jQuery)传递到以下PHP文件中.
jQuery AJAX
$("#login_form").submit(function(){
$.post("login.php",{user:$('#username').val(),pass:$('#password').val()} ,function(data)
Run Code Online (Sandbox Code Playgroud)
PHP
ob_start();
mysql_connect("-", "-", "-") or die("ERROR. Could not connect to Database.");
mysql_select_db("-")or die("ERROR. Could not select Database.");
//Get Username and Password, md5 the password then protect from injection.
$pass = md5($pass);
$user = stripslashes($user);
$pass = stripslashes($pass);
$user = mysql_real_escape_string($user);
$pass = mysql_real_escape_string($pass);
//See if the Username exists.
$user_result=mysql_query("SELECT * FROM users WHERE username='$user'");
$user_count=mysql_num_rows($user_result);
if($user_count==1){
if($pass_length==0){ echo "userVALID"; }
else{
$pass_result=mysql_query("SELECT * FROM users WHERE username='$user' and password='$pass'");
$pass_count=mysql_num_rows($pass_result);
if($pass_count==1){
session_register("user");
session_register("pass");
echo "passVALID";
}
else { echo "passERROR"; }
}
}
else { echo "userERROR"; }
ob_end_flush();
Run Code Online (Sandbox Code Playgroud)
我知道这可能不是最好的做事方式,但这是我所知道的方式!我只是想知道它是否有任何重大的安全漏洞.这对我来说更像是一个概念,因此我没有加入SSL.
它患有
您应该进行此更改,以防人们的密码反斜杠:
if(get_magic_quotes_gpc()){
$user = stripslashes($user);
$pass = stripslashes($pass);
}
$user = mysql_real_escape_string($user);
$pass = sha256($salt.$pass);
Run Code Online (Sandbox Code Playgroud)
首先,md5非常糟糕.也md5()和mysql_real_escape_string()是多余的.在野外产生了碰撞. sha1()尽管弱化仍然更安全,但尚未产生碰撞.最好的选择是php中的sha256,或使用mhash库.
$pass = md5($pass);
Run Code Online (Sandbox Code Playgroud)
您还需要加密密码.
| 归档时间: |
|
| 查看次数: |
9362 次 |
| 最近记录: |