イメージ

レスポンシブ・メールフォームのトークンアドオンについて

セキュリティ
当サイトで無料でダウンロードできるレスポンシブ・メールフォームは、バージョン6.1からトークン機能をアドオンという形で追加できるようになりました。

レスポンシブ・メールフォームには「リファラ(送信元URL)チェック機能」が標準で付いているので、トークン機能はなくても問題ないかもしれません。
リファラ機能をオンにしてもまだ不審なメール送信をされる場合は、このトークン機能の導入を検討しても良いと思います。

【2021年9月追記】
メールフォーム本体のバージョン8.0からはトークン機能が標準装備されました。(デメリットの面が解消されたため)
そのため、このアドオンは開発終了となります。

現在の最新バージョンは2018年5月15日公開のバージョン1.0です。
参考ページ:プログラムをアップデートするの際の思想について

各バージョンごとのアップデート内容については、このページ最下部の「アップデート履歴」に記載してあります。

トークンとはIT用語辞典によると、以下のような意味になります。

トークンとは、証拠、記念品、代用貨幣、引換券、商品券などの意味を持つ英単語。トークンとは – IT用語辞典

メールフォームのようなプログラムにおいてのトークンの役割は、正規ユーザーであるかどうかをチェックするための認証チケット。のような意味合いになります。

なぜトークンが必要になるのかはWebページの仕組みが影響しています。
特にクロスサイト・リクエストフォージェリ(CSRF)攻撃を防ぐためにはトークンによる認証が効果的です。

CSRFについては「クロスサイト・リクエストフォージェリ(CSRF)攻撃とは何かを解説」のページをご覧ください。

この「トークンアドオン」を追加すると、フォームを送信する際に自動的にトークンも送信されるようになり、プログラム側ではトークンのチェックが行われます。(見た目や操作手順としては初期状態と何も変わりません)
トークンと共にフォーム送信

トークンアドオンはメールフォーム本体のバージョン6.1から使用可能ですが、6.1.1以降で使用した際には管理者に届くメール本文に以下のように表示されます。(6.1の場合は表示されないだけで機能はしています)
トークンチェックの結果表示

上記の機能説明の通り、計測された書き込み時間はサイト管理者に届くメールの本文内に記載されます。
フォーム入力者に届けられる自動返信メールのほうには記載されませんので、ここでサンプルを設置しても意味がありません。

というわけでサンプルはありません。
無料のものなのでご自由にダウンロードしてご確認ください。

説明
1、zipファイルを展開します。
ついでにこのZIPファイルをバックアップ保存しておくとベターです。

2、メールフォーム本体にあるaddonフォルダの中に、tokenフォルダを入れます。
以下の場所にtokenフォルダを設置してください。
css、js、phpのフォルダの中身は以下の図では省略しています。

mailform/
  ┃
  ┣━━ addon/token/ここにアドオンの様々なファイル
  ┃
  ┣━━ css/中身を省略
  ┃
  ┣━━ js/中身を省略
  ┃
  ┣━━ php/中身を省略
  ┃
  ┣━━ index.html (フォームのページ)
  ┃
  ┗━━ thanks.html (サンクスページ)

設置は以上です。
設定のためのconfigファイルのようなものはありません。
実際にメールフォームを送信してみて、正常にフォームが送信され、管理者に届くメール内に「トークンチェックは正常に動作しました」の記載があるかを確認してみましょう。

初期状態(このアドオンなし)の状態に戻すには、上記の設置手順2でaddonフォルダに入れたtokenフォルダごと削除することで戻ります。

レスポンシブ・メールフォームにはこれの他にも色々なアドオン(追加機能)がありますが、すべて併用することが可能です。
必要な機能だけを組み合わせてお使いください。

電卓
このアドオンは無料です。
以下からダウンロードできますので、この機能が必要な場合はお使いください。
トークンアドオンのダウンロード

トークンアドオンはセキュリティを高める効果がありますが、以下のデメリットが存在します。
このようなデメリットもあるのでトークンチェック機能は初期状態のメールフォームには実装させず、アドオンとして別配布の形態としました。

【トークン機能使用時のデメリット1】
このトークンアドオンはPHPの「セッション」という機能を利用してトークンを生成しています。
セッションとはCookie(クッキー)の一種だとお考えください。

ですので、フォーム入力者のブラウザが「Cookieを無効にする」というような設定をしている場合はトークンが生成できず、このアドオンによるチェックに引っかかってしまう可能性があります。

【補足説明】
Cookieを無効にしていると、ログインが必要なサイトなどで一度入力したパスワードが保存されなかったり、ログイン状態を維持できなくなりますので、Cookieを無効にしている人がどれほどいるかは不明です。

【トークン機能使用時のデメリット2】
PHPのセッションというものは、最後にアクセスしたときから24分間が有効期限となっています。

つまりメールフォームページを表示させた時点でトークンが生成され、そこから24分間経過するとそのトークンは無効となるので、そのままフォームを送信してもトークンチェックに引っかかってしまうことになります。
これを回避するには、メールフォームページを再読み込みしてトークンを再生成する必要があります。

一定時間ごとに再生成されるからこそ、トークンチェックはCSRF攻撃のような不正送信に対してリファラチェック以上の防御性能を発揮するわけですから、このデメリットは致し方ないとお考えください。

もし逆にセッションの有効期限を長く設定してしまったとしたら、それはリファラチェックと大差ないものとなってしまうのです。

注意
このアドオンは現時点ではレスポンシブ・メールフォーム本体のバージョン6.1以降にのみ対応しています。

  • メールフォーム本体のバージョンは「version.php」または「mailform.php」のファイルの冒頭に書いてあります。
  • 各アドオンのバージョンに関しては、アドオンフォルダの中にある「version.php」、または「アドオン名-config.php」に記載してあります。

また、普通に使用していてプログラム上のバグ(不具合)があった場合には、追加料金なしでバグ修正を行いますので、そのような際にもご連絡ください。
(お客様の手によってJavaScriptファイルやPHPファイルを独自カスタマイズされている場合は除く)

2018/05/15 バージョン1.0 (本体6.1~7.2.1で動作確認済)
  • 公開。
提供サポートなど