CURRENT_USER_CAN()有多安全?

时间:2019-05-18 作者:Marvin3

我通过JSON ajax请求保存敏感数据,它没有经过清理,实际上任何东西都可以传递。

我需要确保只有管理员edit_options 权限可以保存它。

所以我会:

function received_ajax_request() {
  if ( !current_user_can(\'edit_options\') ) {
    return;
  }

  save_to_database( $_POST[\'something\']) );
}
我的问题是它有多安全?我还需要检查其他东西吗current_user_can?

例如,我看到其他一些插件也检查nonce,但当使用rest API时,通常不使用nonce。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

current_user_can 检查当前用户是否具有特定功能。只有这样。。。

It won’t protect you from XSS attacks - 所以,最好也检查一些nonce,这样您就可以确定用户想要执行给定的操作。

假设有一个删除帖子的链接。当然,您将检查用户是否可以删除帖子。但是如果一个用户登录了,我让他点击这个链接怎么办?他不必知道-它可以是一个缩短的链接或图像

It also won’t check if the current user is owner of given object.

今天我是店里的顾客。当然,我可以在订单中添加评论。但只为我的命令

因此,您应该始终检查完全访问权限,而不仅仅是角色和功能。

And of course it won’t make the action safe. 所以你仍然需要消毒,逃跑,等等。。。

相关推荐

Security updates to 3.3.2

我知道所有的安全更新都很重要,但从1到10的范围来看,从3.1.3升级到3.3.2有多重要。我有一些网站需要升级,但主机将我锁定在一个旧版本的php中,限制我使用3.1.3。我目前正在运行php的5.2.3版本。谢谢Bart