【jQuery/PHP】お問い合わせフォームのセキュリティ対策をする

スポンサーリンク
お問い合わせフォームセキュリティ対策_アイキャッチ プログラミング

こんにちは!セミマサです。

以前作成したお問い合わせフォームにセキュリティ対策をしました!この記事で詳細をまとめたいと思います。

※CSSは変化がないのでこの記事には掲載していません。過去記事をご確認ください!

メインとなるform.php

フォームを表示するphpです。CSRF対策としてトークンを使うことにしました。1~6行目がそのために追加した処理です。

・openssl_random_pseudo_bytes(32)で32桁の疑似乱数を生成して変数randに代入。

・bin2hexでrandを16進表記に変換して変数tokenに代入。

・変数tokenをセッション変数に登録

変数tokenはhiddenパラメータとしてformにも埋め込んでおきます。(12行目)

・件名の入力欄はなくても問題ないと思ったので削除しました。

送信処理を行うsend.php

こちらはメール送信を担当するphpです。意識した点は可能な限り外部パラメータを減らすこと。

最初の条件分岐について

ポストされたtokenにNULLではない値が入っていて、かつセッション変数に登録した値と等しい場合処理を継続するようにしています。

isset:値がセットされており、NULLでないことをチェックする

処理内容

前回からの変更点は下記になります。

・subject,from,headersを固定値にしました。emailはメール本文であるmessageに移しています。

・name,email,messageを$_POSTではなくfilter_inputで受け取るようにしました。その際にemailは FILTER_SANITIZE_EMAILで、nameとmessageはFILTER_SANITIZE_SPECIAL_CHARSを用いてエスケープ処理をしています。

・文字化け回避のためにmb_languageで言語、mb_internal_encodingで文字コードを指定しました。

jQuery

変更を加えたのは7・8行目です。ajax内のurlとtypeを直接指定しています。

おわりに

以前作成したお問い合わせフォームに思いつく限りのセキュリティ対策をしてみました。動作は確認済みです。

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