使用AJAX手动登录用户安全吗?

时间:2017-06-24 作者:Johansson

我正在为我的主题添加一个模式登录。

最直接的途径是创建模板并包括wp_login_form(); 在里面。这将加载稍后可以使用CSS或jQuery自定义的核心登录。

但是,它需要重新加载页面以验证凭据。我的想法是使用AJAX请求发送用户名和哈希密码,并通过wp_singon().

现在我的问题是:

这样做安全吗?WordPress本身会以某种方式将密码发送到服务器,但我不确定这就是它admin-ajax? 或者REST-API也可以处理登录吗wp_signon() 正确的登录功能?我想wp_set_auth_cookie() 可能也会派上用场

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

假设您没有做愚蠢的事情,并且正确使用了相关的API,AJAX登录表单可以像“核心”登录表单一样安全。

传输数据的方式本身并不重要。即使是HTTP,尽管人们和谷歌会声称它不安全,但使用2FA、一次性密码,或者只使用自己的手机连接,而不是咖啡馆/工作WiFi/网络,也可能足够安全。在任何情况下,这都由网站所有者决定。

关于第3点,wp_signon 是正确的,从那里应该完成所有cookie的身份验证和设置。

在使用AJAX时需要记住的一点是,如果不做一些额外的工作,成功的登录本身不会反映UI中的新状态,最简单的方法可能是刷新页面,这会使整个AJAX想法变得不那么吸引人。

您将面临的另一个障碍是错误报告,如用户/密码不匹配,您需要设法将登录错误传输到前端,并以足够通用的方式让其他登录相关插件添加自己的错误。

如果听起来我反对通过AJAX登录,那么我想我是反对的,但这只是我个人的观点,从技术上讲,这并没有什么不可能或不安全的地方。

结束

相关推荐

如何从纯前端AJAX获取帖子(只使用帖子ID)?

我需要在模式叠加中显示帖子的各种内容。如何使用经典的jQuery方法从前端(直接从.js文件)通过AJAX调用Wordpress?$.ajax({ \'url\' : ? data : { \'id\' : 247 <-- post ID } ... }); 这不是PHP文件,因此没有:admin_url(\'admin-ajax.php?action=my_action&post_id