この記事でわかること
- 状態を変える処理を一覧にした
- 要求を受ける側でnonceを照合する
- 操作権限と対象状態を検証する
意図しない操作とは
CSRFは、ログイン中の利用者に意図しない操作をさせるよう誘導する攻撃です。設定保存、申請承認、記事の削除といった状態を変える処理について、どの画面からどの処理が実行されるか整理します。
管理画面のボタンだけを隠しても、処理そのものに確認がなければ十分ではありません。設定を変更する要求が届いたとき、サーバー側で実行の可否を判断しているかを確認します。
nonceの役割を知る
WordPressのnonceは、特定の操作に関連したトークンを照合して、意図しない要求への防御を助ける仕組みです。フォームなどで発行した値を処理側で検証し、失敗した場合は変更を行いません。
ただしWordPressのnonceは名前に反して一度だけの使用を保証せず、認証やアクセス権限の代替にもなりません。公式資料の注意を踏まえ、トークンが正しいことと操作する権利があることを別々に確認します。
権限と対象の状態を確かめる
例えば申請承認なら、実行者が承認に必要な権限を持つか、対象投稿が存在するか、審査待ちかを確認します。投稿ごとの編集権限も考慮し、権限不足や不正な対象IDではデータを書き換えません。
入力値の型や許可した選択肢の検証も必要です。nonceが有効だから入力値も正しいと判断せず、必要な値がそろっているか、実際の操作に適した範囲かを個別に調べます。
ゲストと期限切れを試す
未ログインで送る問い合わせフォームでは、ゲスト向けnonceの性質を理解し、スパム対策や送信回数の制限を別途設計します。nonceだけで本人確認やbot対策が完成するわけではありません。
検証環境で管理者、権限のない利用者、未ログイン、時間が経過した画面を使って操作します。送信失敗や再送時にデータが重複しないかも確認し、仮アカウントとテストデータは作業後に整理します。
検証ケースを作る
操作ごとに「正常な管理者」「権限のないログイン利用者」「未ログイン」「トークン不一致」「対象が存在しない」のケースを作ります。期待する結果は、更新成功、権限エラー、認証画面など、それぞれ具体的に決めます。
エラーの案内が不親切だと、利用者が更新されたか分からず繰り返し送信することがあります。拒否された場合にデータが変わっていないことと、再度安全に操作できることを両方確認し、テスト結果を作業記録へ残します。
機能のテストは公開済みの広告設定や申請を使わず、検証用の投稿やフォームで実施します。誤って本番通知や外部サービスの処理を動かさないよう、検証環境の接続先を先に確認しておきます。
対象の投稿が変更可能な状態から別の状態へ変わった場合も想定します。古い承認画面を開いたまま再操作したとき、現在の状態を確認してから処理するかを検証し、二重の承認や通知を防ぎます。
- 状態を変える処理を一覧にした
- 要求を受ける側でnonceを照合する
- 操作権限と対象状態を検証する
- ゲストの送信対策を別に設計した
- 権限不足と期限切れを検証した
参考にした公式情報
確認日:2026-11-02。提供条件や仕様は変更される場合があります。
広告・アフィリエイトリンクを含む場合があります。編集・掲載方針