我做了一个Ajax登录系统,它非常简单:login.php
简单地检查$_POST['']
字段;如果正确,它返回ok),通过mysqli
等。我通过我的反SQL注入函数保护了这部分代码。
不幸的是,我对Javascript没有太多经验,我担心我的方法的安全性。将if(data=='ok')
放入 js 中是否足够安全?任何人都可以以某种方式将其更改为(data=='')
Firebug吗?
$.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);
}
}
});
您的代码只是重新加载页面。因此,如果您修复了任何服务器端未经授权的登录漏洞,那么您就可以了。
来自用户的任何输入都被视为不安全,必须在服务器端进行验证。所以你的jQuery代码对于黑客来说是不安全的,因为它暴露给用户,他可以编写自己的函数并尝试登录(但不会通过服务器端验证)。但这对你来说并不重要。
我说它不安全。我只会打开Chrome的开发工具并就地编辑您的脚本。我会改变
if(data=='ok')
自
if(data != 'ok')
然后右键单击 ->"保存" -> 通过点击取消关闭"另存为"对话框。就是这样,我现在在浏览器中有一个正在运行的脚本,如果服务器响应与"确定"不同的内容,它将评估为"登录正常"。