当我使用ajax进行登录时,它是否安全?我不确定jquery部分中的输入值是否安全。我应该在jquery中使用md5,sha1的一些库吗?
我在谈论这一部分:
data: { mail: $('.login_form .mail').val(), pass: $('.login_form .pass').val() }
全:
$.ajax({
type: "POST",
url: "./ajax/identifyLogin.php",
data: { mail: $('.login_form .mail').val(), pass: $('.login_form .pass').val() },
dataType:'JSON', //or HTML, JSON, etc.
success: function(response){
if (response.status == "fail") {
e.preventDefault();
}
}
});
});
并且在identifyLogin.php中我有这段代码
$mail = strtolower(mysql_real_escape_string($_POST["mail"]));
$password = sha1(md5($_POST["pass"]));
if($mail == "" || $password == ""){
echo json_encode(array("status"=>"fail"));
}else{
$data = mysql_query("select * from users where mail='$mail' and password='$password'");
if(mysql_num_rows($data) == 0){
echo json_encode(array("status"=>"fail"));
} else {
while($radek = mysql_fetch_assoc($data)){
echo json_encode(array("status"=>"success"));
}
}
}
答案 0 :(得分:0)
您应该使用mysqli_*
或PDO
代替,mysql_*
是depreciated
使用ajax登录本身不是问题,但确保未捕获用户凭据的方法是使用带有签名HTTPS
证书的SSL
答案 1 :(得分:0)
AJAX本身并不比标准HTML表单回发更安全;所以你一定要使用HTTPS。但是你的解决方案存在许多问题,仅举几例:
这个问题表明你对安全性还不强。我建议你使用复杂的框架(比如Symfony2),因为它们正是为了防止这种安全漏洞。