这个 Ajax 登录系统是否足够安全


Is this Ajax login system safe enough?

我做了一个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')

然后右键单击 ->"保存" -> 通过点击取消关闭"另存为"对话框。就是这样,我现在在浏览器中有一个正在运行的脚本,如果服务器响应与"确定"不同的内容,它将评估为"登录正常"。