WordPressのフォームといえば、定番プラグインを使うのが当たり前でした。
- Contact Form7
- MW WP FORM(開発終了残念)
- Snow Monkey Forms
拡張プラグインで確認画面を作ったり、アクションフックやフィルターフックを使って、色々カスタマイズしたり…
案件に合わせて、鬼カスタマイズをした方も多いと思います。
今回、弊社ではあるサイトのフォームをプラグインに頼らず、ゼロから自作することにしました。
今回は、どう進めたのか、そしてセキュリティで考慮すべきポイントを、実際の制作現場の視点でご紹介します。
きっかけは、定番フォームプラグインの「開発終了」
MW WP FORMが、ファイル添付機能を将来のバージョンで廃止する方針を発表しました。
プラグイン自体もすでに新規開発を終えており、今後はセキュリティ以外の更新が期待できません。
別のプラグインにするか、何かスクラッチするかを悩んでいるとき、ふと「Claude」を使えば、簡単に作れるでは?と思ったのがきっかけです。
設計で最も悩んだ「ファイルの持ち回り」
フォームは「入力 → 確認 → 完了」の3ステップ構成。
通常、鬼門になるのが、確認画面をまたいでファイルをどう受け渡すかです。
ここはClaudeを使えば、すんなり解決します。
ファイルのアップロード、一時ディレクトリへの保存、アップロードしたファイルをメールに添付、メール送信後にサーバーから削除…
さらに、送信先やメール本文などはWordpressの管理画面から編集できるようにしておけば、運用もスムーズになります。
Claudeとの進め方 「いきなり作らせない」のがコツ
Claudeで作ったことがある人はわかると思いますが、思ったより簡単には作れないということです。
事前に下準備や検証も必要です。
- まず「決めるべき未確定事項」を洗い出してもらう(許可ファイル形式、上限サイズ、スパム対策、埋め込み方法など)
- 実装前に構成案と処理フローを提示してもらい、方針をすり合わせる
- ローカル環境で「入力→確認→完了」を実際に通し、メール送信・添付・削除まで毎回検証する
- ブラウザで触って見つかった不具合を、「再現→原因特定→修正」で潰していく
たとえば「確認画面から“修正”で戻ると、添付ファイルが消えることがある」ということがあったります。しかも、特定の条件でしか発生する不具合もだったりもします。AIに丸投げせず、症状を正確に伝え、返ってきた修正を必ず検証する。この積み重ねが品質を左右します。
セキュリティで考慮すべきポイント
フォームは攻撃の入口になりやすいですが、さまざまな手法が簡単に試せるのがAIのいいとことです。
脆弱性テストをすれば、あの手この手で試してくれ、対策までしてくれます。
- CSRF対策:ワンタイムトークン(nonce)で、正規の画面からの送信かを確認する
- サニタイズとエスケープ:入力値を無害化し、表示時はエスケープする
- ファイル形式の検証:拡張子のホワイトリストに加え、中身(MIMEタイプ)とファイル先頭のデータも確認して偽装を防ぐ
- ファイル名のランダム化:
.phpなど実行系や二重拡張子を弾き、画像は再保存して埋め込みデータを除去する - 一時ディレクトリの保護:外部から直接アクセスできないようにし、送信後は確実に削除する
- スパム対策の多層化:ハニーポット(人には見えないダミーの入力欄)、送信が速すぎる場合の遮断、同一IPからの連続送信制限、そしてreCAPTCHA v3を組み合わせる
- 見落としがちな対策:表計算ソフトに貼り付けたときに数式として実行される値の無害化、メールヘッダの改行除去、二重送信の防止など
とくにファイル添付があるフォームは、「アップロードされたファイルをいかに信用しないか」が設計の肝になります。
AIと作ってみて感じたこと
よかったのは、要件整理からセキュリティの洗い出し、実装、デバッグまでをテンポよく進められたことです。とくに「起こりうるリスクを漏れなく挙げる」用途では、人の抜けを補ってくれる心強さがあります。ゼロからコードを書いての実装や検証は大変ですし、テストも大変です。その大部分を担ってくれます。
一方で注意点も明確です。生成されたコードは必ず自分たちで読み、実際に動かして検証すること。とくにセキュリティは、最後は人がレビューして責任を持つ領域です。完全にコードの知識やフォームの知識がない場合、こういったところが難しいので、経験者こをAIの恩恵が大きいです。
まとめ ― フォームの作り替えは「要件の棚卸し」から
定番プラグインの終息は不安なニュースですが、自分たちの運用に最適化して作り替えるチャンスでもあります。
今後、Wordpressの独自プラグインなんかも増えていくでしょう。というかプラグインをダウンロードするということ自体なくなるかもしません。
そうなるとノウハウを書いてあるようなブログは減っていく気がするんですが、どうなるんでしょうか…。
弊社では、AIも活用しながら、確認画面つき・ファイル添付対応のフォームや、セキュリティを考慮した独自フォームの開発に対応しています。「プラグインの終了で困っている」「独自のフォームを作りたい」といったお悩みがありましたら、ぜひお気軽に弊社までご相談ください。