登録フォームに対し、CSRF対策を入れる

WordPress

これまでに作成したプラグインは、データ登録画面で、入力フォームを表示し、次の画面で内容チェック、その後に完了画面を表示する。という一連の動作になっています。

この時、入力フォームから確認画面へ遷移する際のセキュリティとして、CSRF攻撃がされる場面が想定されます。

このCSRF攻撃に対応する為に、対策を入れます。
具体的には、入力画面のform開始タグの直下に、以下の命令を書きます。

<?php wp_nonce_field("my-nonce-key", "my-form"); ?>

また、確認画面側では、次のように書いて、CSRFのチェックを行います。

//CSRF対策用のチェック
if (isset($_POST["my-form"]) && $_POST["my-form"]) {
    if (check_admin_referer("my-nonce-key", "my-form")) {
        //問題がなければ、ここで処理を続行
        
    }
}

ポイントとなる箇所だけを書きましたが、フォーム内に「wp_nonce_field」を、確認画面のチェック処理で「check_admin_referer」を、それぞれ使うということで、覚えておいてよいかと思います。

コメントを残す

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