通过ajax登录和注册是否安全?

Jee*_*ong 5 javascript php ajax

我的 JS 代码(举个例子,可能有一些语法错误)

$(document).on('click','#btnEdit',function(e){ 
    var id = $("#inp_id").val(), ps = $("#inp_ps");     
    $.ajax({
        type: 'POST',
        url: 'http://example.php',
        data: {act:'#LogIn',id:id,ps:ps},
        success: function(response){
            if($.trim(response) === "success"){
                alert("Login Successful");   
            }
            else{
                alert("Invalid ID or Password");
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

在 php 里面

if($_POST[act] == "#LogIn"){
    $userid = Encrypt($_POST[id],$key1);
    $userps = hashPS($_POST[ps],$salt);
    //query...
    if(result > 0){
         $_SESSION['id'] = Encrypt($userid,$key2);
         $_SESSION['token'] = //random code;
    }
}
Run Code Online (Sandbox Code Playgroud)


我的问题:

有没有办法使代码安全?因为我认为攻击者可以编写自己的脚本并将数据发送到 php 以获取和 id。或者也许使用ajax登录和注册只是一个坏主意。

Kai*_*tze 3

查看基于表单的网站身份验证的权威指南 [已关闭]\n

\n\n
\n\n

前端加盐主要是为了保护用户的隐私。 \n验证码的目的是验证您的用户是真人而不是蜘蛛,并保护您的服务器免受DDOS 攻击

\n\n

为了保证安全,您需要 HTTPS。如果在没有HTTPS的情况下实现登录服务,则存在潜在的风险,例如中间人攻击。所以我必须在这里提供一个后端解决方案。

\n\n

正如猛禽提到的提到的,攻击者仍然可以通过暴力破解来测试密码。确实是的。然而,如果你正确选择加密算法,破解一个密码将需要数百万年的时间。

\n\n

除此之外,还有一种攻击,称为跨站请求伪造。你必须通过简单地引入一个来防止它csrf_token.

\n\n

我问了一个问题(\xe3\x80\x90django-1.11.3/angular-1.6.4\xe3\x80\x91POST AJAX CSRF验证失败)一年前

\n\n

证书机器人

\n\n

安装

\n\n
sudo apt install certbot\n
Run Code Online (Sandbox Code Playgroud)\n\n

配置

\n\n
sudo certbot certonly --standalone -d example.com -d www.example.com\n
Run Code Online (Sandbox Code Playgroud)\n\n

不是证书机器人

\n\n

有时使用OAuth会更好并让 Google 或 Facebook 等服务提供商负责保护登录安全,

\n

  • 如果仅使用HTTPS,攻击者仍然可以通过暴力破解来测试密码。不完整的解决方案。 (2认同)