使用ajax登录是否安全?

时间:2011-08-04 09:24:26

标签: php ajax security authentication

即将在我的网站上包含一个登录系统,但我不认为使用ajax发送和接收来自名为login.php的外部php脚本的确认安全性是个好主意。 并以相同的方式注销另一个logout.php 任何建议

6 个答案:

答案 0 :(得分:20)

安全

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

但是,从可用性角度来看,请确保禁用javascript的人仍然可以登录您的应用。

请务必使用POST方法发送您的AJAX请求,GET请求,及其参数(例如,纯文本密码)可能会在您的网络服务器日志中结束,您正在使用HTTPS。

可用性

正如Grégoire所指出的那样:

同样从可用性角度来看,自动完成功能不适用于chrome上的AJAX表单,也适用于firefox中加载AJAX的表单。浏览器甚至不建议记住您的密码

答案 1 :(得分:11)

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

但是,您仍然需要刷新页面,或重定向以向刚刚授权的用户显示相应的内容。所以,我不认为Ajax会在这种特殊情况下发挥作用。

答案 2 :(得分:2)

通过ajax登录只要您有办法防止XSRF攻击,POST应该是安全的。 可以通过在ajax请求中设置X-CSRFToken标头来完成。在服务器端,您应该使用某种中间件来检查并验证头文件中的CSRF令牌。

您可以在cookie中设置csrf标记,然后查询它并在标题中设置它:

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

xhr.setRequestHeader(“X-CSRFToken”,csrftoken);

(我在这里使用jquery cookie库来模仿)

答案 3 :(得分:1)

GET或POST与ajax调用确实存在相同的安全风险。这一方或另一方并非隐含风险。

答案 4 :(得分:0)

好的ajax帖子是安全的

这一切都取决于您的编码,您必须记住所有可能发生的攻击

使用ajax只是为了发送数据并在php中执行所有身份验证并返回成功的消息

答案 5 :(得分:0)

您可以将AJAX与SSL容器(HTTPS)一起使用。但发件人页面也要加密。因为跨域政策。