我已经创建了一个Ajax登录系统,这非常简单:login.php
只检查$_POST['']
字段;如果它是正确的,它返回ok),mysqli
等。我通过我的反SQL注入函数保护了那部分代码。
不幸的是,我对Javascript没有多少经验,我担心我的方法的安全性。
将if(data=='ok')
放入js是否足够安全?有人能以某种方式将其更改为Firebug中的(data=='')
吗?
$.ajax({
type: "POST",
url: "system/login.php",
data: dataString,
cache: false,
beforeSend: function(){
$("#login").val('Checking...');
},
success: function(data){
if(data=='ok'){
$("#login").val('Login')
$("#msg").html("<div class='alert alert-success' role='alert'><b>Success!</b> You have been logged successfully. </div>");
setTimeout(function(){
location.reload();
}, 2000);
}else{
setTimeout(function(){
$("#loginBox").effect( "shake" );
$("#login").val('Login');
$("#msg").html("<div class='alert alert-danger' role='alert'><b>Error!</b> Invalid username and password. </div>");}, 1000);
}
}
});
答案 0 :(得分:1)
您的代码只是重新加载页面。因此,如果你已经修复了任何服务器端未经授权的登录漏洞,那么你就可以了 来自用户的任何输入都被认为是不安全的,必须在服务器端验证。所以你的jQuery代码对黑客来说是不安全的,因为它暴露给用户并且他可以编写自己的函数并尝试登录(但不会通过服务器端验证)。但这对你没关系。
答案 1 :(得分:-6)
我说它不安全。 我只需打开Chrome的Dev-Tools,就可以编辑脚本。我会改变
if(data=='ok')
到
if(data != 'ok')
然后右键单击 - &gt; &#39;保存&#39; - &GT;关闭&#39;另存为&#39;通过点击取消对话。就是这样,我现在在浏览器中有一个正在运行的脚本,它将评估为&#39; Login ok&#39;如果服务器响应的内容不同于&#39; ok&#39;。