问题所在
因此,一段时间以来,我一直在尝试使用不同的AJAX方法将数据发送到服务器,该服务器将被处理并存储在MySQL数据库中。
AJAX请求命中api.php
的页面使用PHP prepared语句保存数据,所以MySQL注入实际上不是问题,需要加密的密码或数据也由api.php
处理,这不是我在这里问的问题。我的问题更多地是关于如何确保数据在从客户端传输到服务器时是安全的。
方法
我目前有(对于我已经包含在下面的登录示例):
在domain.
api.php
.
login.php
和api.php
上使用)时才会起作用。访问functions.
api.php
上的api.php
内部敏感数据中的数据库交互时(与问题无关)。问题
最后,我的问题是:
这种使用异步 (Ajax)请求的方法是否足够安全,可以使用,而不只是将数据提交到
示例
我知道每个人都有不同的方法来处理他们网站的数据和传输这些数据。我也明白,无论你做什么,你永远不会得到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"
});
}
发布于 2016-06-22 16:23:41
简而言之:你不能保护你的客户端。
长长的答案:
使用AJAX的
您不能做任何事情来让浏览器证明在客户端运行的实际上是您的javascript代码。然后,要采取的最明显的操作是最简单的:从不信任用户输入。
这意味着,正如您开始做的那样,使用会话、速率限制、数据验证、fail2ban (在一定数量的失败后禁止客户端ip )、日志监控来保护服务器端的安全……
发布于 2017-07-18 22:48:51
最好的方法仍然是做服务器端的安全,如果我是网站的登录用户,我也可以检查我的meta标签上的csrf令牌,并伪造到服务器的脚本。因此,确定的方案是服务器端验证。
https://stackoverflow.com/questions/37912937
复制相似问题