首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用PHP和jQuery发送安全的AJAX请求

如何使用PHP和jQuery发送安全的AJAX请求
EN

Stack Overflow用户
提问于 2016-06-20 07:37:10
回答 2查看 51.3K关注 0票数 31

问题所在

因此,一段时间以来,我一直在尝试使用不同的AJAX方法将数据发送到服务器,该服务器将被处理并存储在MySQL数据库中。

AJAX请求命中api.php的页面使用PHP prepared语句保存数据,所以MySQL注入实际上不是问题,需要加密的密码或数据也由api.php处理,这不是我在这里问的问题。我的问题更多地是关于如何确保数据在从客户端传输到服务器时是安全的。

方法

我目前有(对于我已经包含在下面的登录示例):

在domain.

  • Certain AJAX请求上运行的functions.

  • PHP PHP证书/HTTPS(显然不是此登录请求示例,因为一开始没有会话)仅当api.php.

  • Encrypts会话在整个站点上有效(在此示例中在login.phpapi.php上使用)时才会起作用。访问functions.

  • PHP PDO预置语句时api.php上的
  • 速率限制在与api.php内部敏感数据中的数据库交互时(与问题无关)。

问题

最后,我的问题是:

这种使用异步 (Ajax)请求的方法是否足够安全,可以使用,而不只是将数据提交到

  1. 页面并重定向?(随着这种方式改善用户的experience).
  2. How,我是否可以检查用户发送的数据是否已被篡改?
  3. 我是否合理地采取了足够的措施来保护用户的数据,如果没有,我还能做些什么?

示例

我知道每个人都有不同的方法来处理他们网站的数据和传输这些数据。我也明白,无论你做什么,你永远不会得到100%的保护,因为你的系统周围可能有一些你无法解释的漏洞和方式。我正在寻找关于我安全发送数据的一般方法的反馈/改进,而不是批评下面的特定代码,因为它只是一个例子。但任何建设性的答案都是受欢迎的。感谢您抽出时间来阅读/回答。

function loginUser() {
    var process = "loginUser";
    var data = $("form").serializeArray();
    data[1].value = SHA512(data[1].value); // sha then encrypt on api.php page 
    data = JSON.stringify(data);

    $("#loginButton").html('<i class="fa fa-spinner fa-pulse fa-lg fa-fw"></i> Login');
    $.ajax({
        type: "POST",
        url: "api.php",
        data: {"process": process, "data": data},
        success: function(data) {
            if (data.response.state == "success") {
                // if api.php returns success, redirect to homepage
            } else {
                // if api.php returns failure, display error
            }  
        },
        error: function(jqXHR, textStatus, errorThrown, data) {
            // error handling
        },
        dataType: "json"
    });
}
EN

回答 2

Stack Overflow用户

发布于 2016-06-22 16:23:41

简而言之:你不能保护你的客户端。

长长的答案:

使用AJAX的

  • 与使用表单发布数据一样安全。使用HTTPS的
  • 防止中间人查看您的用户数据,因此用户发送的实际数据是安全的。

您不能做任何事情来让浏览器证明在客户端运行的实际上是您的javascript代码。然后,要采取的最明显的操作是最简单的:从不信任用户输入。

这意味着,正如您开始做的那样,使用会话、速率限制、数据验证、fail2ban (在一定数量的失败后禁止客户端ip )、日志监控来保护服务器端的安全……

票数 1
EN

Stack Overflow用户

发布于 2017-07-18 22:48:51

最好的方法仍然是做服务器端的安全,如果我是网站的登录用户,我也可以检查我的meta标签上的csrf令牌,并伪造到服务器的脚本。因此,确定的方案是服务器端验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37912937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档