即将在我的网站上包含一个登录系统,但我不认为使用ajax发送和接收来自名为login.php的外部php脚本的确认安全性是个好主意。 并以相同的方式注销另一个logout.php 任何建议
答案 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)一起使用。但发件人页面也要加密。因为跨域政策。