Как мне убедиться, что POST-запрос для плагина WordPress сделан администратором? - PullRequest
0 голосов
/ 11 октября 2019

Как я могу гарантировать, что данные, которые будут храниться для плагина (скажем, это настройка), на самом деле создаются администратором, а не просто случайным пользователем сайта?

Достаточно ли этого? (Проверка, может ли пользователь управлять параметрами?)

Или есть ли лучший способ проверить, является ли человек администратором, который будет использовать плагин?

Например:

function myFunction()
{
  if ( !current_user_can( 'manage_options' ) )  {
    wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
  }
  if(!empty($_POST['pluginSetting']))
  {
     update_option( $option, $_POST['pluginSetting']);
  }
}

1 Ответ

3 голосов
/ 11 октября 2019

Ваш метод проверки пользовательских возможностей (current_user_can( 'manage_options' )) является адекватным, поскольку «manage_options» - это возможность, которую имеют только администраторы и супер-администраторы (если вы не настраиваете роли).

Чтобы сделать это немногоЯ мог бы склониться изменить логику, чтобы специально проверить «ложное» логическое значение. Таким образом, вы неявно проверяете фактическое возвращаемое значение из current_user_can() на самом деле ложно:

if ( false === current_user_can( 'manage_options' ) ) { //...

Это должно помочь предотвратить проскальзывание вашей логики.

Еще одна вещь, которую вы могли бы сделатьпревзойти это значит использовать одноразовый номер. Вы должны включить одноразовый номер в свою форму (где параметр устанавливается и отправляется / сохраняется), а затем проверять этот одноразовый номер перед сохранением параметра. Смотри: https://codex.wordpress.org/WordPress_Nonces

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...