WordPressに関する情報や技術紹介です

自作プラグインをWordPrss公式サイトへ登録申請したら拒否された話

## Not using Nonces

nonceを使ってない。フォームの値を使用する時はnonce機能を利用してください。

詳しい解説はWordPress CODEXを読んでください。

要するに送られてきたPOST変数やGET変数が確実に正しいページから送られてきた事を確認する為の機能です。
一度しか使われない文字列を付与してフォーム送信時にその文字列が正しいかをチェックするみたいです。もし正しくない場合は404を返します。

<?php
/* 修正前 */
if( isset( $_POST["action"] ) && $_POST["action"] == "option_update" ) {
  ...(何らかの処理)...
}
?>
<form action="<?php echo esc_url( $_SERVER['REQUEST_URI'] ); ?>">

/* 修正後 */
<?php
if( isset( $_POST["action"] ) && $_POST["action"] == "option_update" ) {
  // nonceの検証
  $nonce = $_REQUEST['_wpnonce'];
  if ( wp_verify_nonce( $nonce, 'isp_users_guide' ) ) {
    ...(何らかの処理)...
  } else {
    $msg = 'セキュリティーチェック エラー';
    $alert = 'alert-danger';
  }
}
?>
<form action="<?php echo wp_nonce_url( esc_url( $_SERVER['REQUEST_URI'] ), 'isp_users_guide' ); ?>">

フォームデータを扱う前に『wp_verify_nonce()』関数でnonceをチェック。
formのactionに『wp_nonce_url()』関数でnonceを追加。

上記の2つの関数を使うだけです。

ちなみにAjaxを扱う時も、

<script type="text/javascript">
var ajax = "<?php echo wp_nonce_url( bloginfo( 'wpurl' ) . '/wp-admin/admin-ajax.php', 'isp_users_guide' ); ?>";
</script>

としてnonceを追加しました。

タグ
, , , , , , , , ,
トラックバックURL

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

ページTOPに戻る