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

标签 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");
            }
        }
    });
});

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;
    }
}


我的问题:

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

最佳答案

查看 The definitive guide to form-based website authentication [closed] .


从前端加盐主要是为了保护用户的隐私。 CAPTCHA 旨在验证您的用户是真实的人而不是蜘蛛,并保护您的服务器免受 DDOS attack 的攻击。 .

为了保证安全,您需要 HTTPS。不使用HTTPS实现登录服务有潜在风险,例如Man-in-the-Middle-Attack .所以我必须在这里提供一个后端解决方案。

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

此外还有一种攻击,名为Cross-site request forgery .您必须通过简单地引入 csrf_token 来防止它。

我问了一个question(【django-1.11.3/angular-1.6.4】POST AJAX CSRF verification failed)一年前你可能会得到一些灵感。

Certbot

安装

sudo apt install certbot

配置

sudo certbot certonly --standalone -d example.com -d www.example.com

不是 Certbot

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

关于javascript - 通过 ajax 登录和注册是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51833413/

相关文章:

javascript - 滚动时更改背景附件会导致 WebKit 中的图形故障

带有 DATE 的 PHP 命中计数器

javascript - Jquery:如何捕获不在<div>区域内的点击事件?

javascript - 使用 jQuery 和 Javascript 的多个 API 调用架构

javascript - 将变量从 html 内的 JS 代码传递到单独的 JS 代码,不起作用

javascript - 在Javascript中创建一个空的二维数组,带有键

php - Laravel 翻译

php - Symfony 无法识别通过 Guzzle 多部分/表单数据请求上传的多个文件

ajax - 用于单页应用程序的 webforms 与 asp.net mvc - 选择哪个?

javascript - 通过 URL 找到浏览器选项卡并关闭它