wp_create_nonce() の使い方|説明・引数・注意点

説明

wp_create_nonce() は、nonce(一度きりの合言葉のようなトークン)を生成する関数です。CSRF(なりすまし送信)対策に使います。

基本構文

wp_create_nonce( string|int $action = -1 ): string

引数

  • $action:処理を識別する文字列

戻り値

nonceの文字列。

使い方(サンプル)

$nonce = wp_create_nonce( 'my_action' );

注意点

  • 有効期間は既定で12〜24時間です。
  • 検証には wp_verify_nonce()、フォームへの埋め込みには wp_nonce_field() が便利です。

実務での使いどころ

  • JavaScript(Ajax)に渡す、nonceの値を作るとき。
  • リンクのURLに付ける、nonceを作るとき。

よくあるミスと対処

  • ユーザー・用途を問わず、同じ値を使い回すつもりで、アクション名を決めている。用途ごとに、アクション名を分ける。
  • nonceを、権限の確認の代わりにしている。nonceは「その画面から送られた」ことの確認で、権限の確認ではない。
  • ページキャッシュされるページに、nonceを出力し、期限切れで検証に失敗する。

NG例

wp_localize_script( 'my-script', 'myAjax', array( 'nonce' => wp_create_nonce() ) ); // アクション名がない

OK例

wp_localize_script( 'my-script', 'myAjax', array(
	'url'   => admin_url( 'admin-ajax.php' ),
	'nonce' => wp_create_nonce( 'my_ajax_action' ),
) );

使い分け早見表

関数 役割
wp_create_nonce() nonceの値を作る
wp_verify_nonce() nonceの値を検証する
wp_nonce_url() nonce付きのURLを作る

関連項目

wp_verify_nonce()、wp_nonce_field()、check_admin_referer()

公式リファレンス:wp_create_nonce() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました