关于用户权限和随机数的AJAX安全

时间:2016-12-28 作者:kot

我正在开发一个插件,用户可以在其中上载、查看和删除一些私人文件。显然,用户应该始终只能处理自己的文件,而不能处理其他用户的文件。

我想知道出于安全原因,使用ajax执行这些操作是否不明智。主要是因为https://codex.wordpress.org/AJAX_in_Plugins#Ajax_on_the_Viewer-Facing_Side states that everything executed through admin-ajax.php is executed \'with elevated rights\' (见“注2”)。Can I still achieve secure differentiation between users 并且只允许文件所有者(当然要为DB选择文件标识用户及其ID)和管理员(当然要确保用户拥有管理权限并授予对所有文件的访问权限)访问各自的AJAX功能?

此外,在这种情况下,nonce如何提高安全性?据我所知,只有当您想将执行操作的次数或时间限制在有限的范围内时,它们才有用,但在任何关于wordpress和ajax的文章中,无论使用与否,都强烈鼓励使用它们。

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

注释是关于is_admin() 确定用户是否有权限执行某些操作,因为在除admin-ajax.php, 只有登录的用户才会这样。您仍然可以使用API来确定用户是否登录以及他们是谁,只要您这样做并对该数据进行操作,它就与任何其他类型的请求一样安全。

nonce可以通过强制执行意图来调用操作来提高安全性。触发AJAX请求的链接可能会被其他人伪造,如果有人让登录的用户无意中单击其中一个链接,它可能会调用用户不打算执行的操作。Nonces旨在通过添加唯一标识符来防止这种情况,该标识符仅适用于特定操作,并且过期。通过检查nonce,您可以更确信用户打算调用该操作,并且请求不是伪造的。

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i