使用ajax登录安全吗?


Is it safe to use ajax for login?

我即将包括一个登录系统到我的网站,但我不认为这是一个好主意的安全使用ajax发送和接收确认从外部php脚本称为login.php用同样的方法注销另一个logout.php有什么建议吗

安全性

AJAX与普通的旧表单+刷新页面一样安全。最后,它总是一个HTTP请求。你为什么这么想?

然而,从可用性的角度来看,确保禁用javascript的人仍然可以登录到你的应用程序。

确保使用POST方法发送AJAX请求,因为GET请求,及其参数(例如,让我们说,明文密码)可能会在您的web服务器日志中结束,除非您使用HTTPS。

可用性

正如gracimgoire指出的:

同样从可用性的角度来看,自动完成对chrome上的AJAX表单不起作用,对firefox中加载AJAX的表单也不起作用。浏览器甚至不会建议记住你的密码

我想不出使用Ajax处理登录和注销有什么安全隐患。在ajax和服务器端层之间来回发送什么并不重要(只要不将纯文本密码从服务器发送到客户端),因为会话将是保存授权状态的会话。

但是,您仍然需要刷新页面,或者重定向以向刚刚授权的用户显示适当的内容。所以,我不认为Ajax在这种情况下是有效的

只要有防止XSRF攻击的方法,通过ajax POST登录应该是安全的。这可以通过在ajax请求中设置X-CSRFToken头来实现。在服务器端,您应该有某种中间件来检查和验证header中的CSRF令牌。

您可以在cookie中设置csrf令牌,然后在header中查询它并设置它:

var csrftoken = $.cookie('csrftoken');

xhr。setRequestHeader("X-CSRFToken",csrftoken);

(这里我使用jquery cookie库来说明)

GET或POST与ajax调用确实具有相同的安全风险。其中一个或另一个没有隐含风险。

您可以将AJAX与SSL容器(HTTPS)一起使用。但是发送者页面也必须加密。

ajax帖子是安全的

这完全取决于你的编码,你必须记住所有可能发生的攻击

仅使用ajax发送数据,并在PHP中完成所有身份验证,并返回成功消息