技術編1 - espar form の仕組み

このページでは espar form の技術的な仕組みについて解説します。

一般的な問い合わせフォームとの違い

通常の問い合わせフォームは、PHP等で書かれたサーバサイドプログラムが必要です。formは例えば以下のようになります。

<form action="mail.php" method="post">
(中略)
</form>

上記の例は、<form>タグ内のinput要素に入力された値が、PHPプログラムである mail.php に渡されてメールが送られることを意味します。つまりサーバにPHP環境が必要です。また、PHPから使われるメール送信用ミドルウェアも必要となります。

これは、

  • PHPプログラムの脆弱性
  • メールトラブル時の調査体制

を気にする必要があるということを意味します。使用するオープンソースのメール送信プログラムは、セキュリティが考慮されていますか?サポートやセキュリティパッチは十分でしょうか?また、万が一メール送信に問題があったとき自社でログ調査と対応ができますか?

これに対し esapr form では、埋め込みコードを貼り付けて html/css を少し付け加えるだけで、動くフォームが作れます。(以下は例)

<form class="espf">
...(中略)...
    <div><input type="text" name="name" class="form-control espf-required" value="" id="name" size="50"></div>
    <div class="form-input-error espf-e-name-required" style="display:none;">名前は必須項目です</div>
...(中略)...
</form>

従来の PHP 発動型メールフォームの仕組みと espar form の違いを比較してみます。

一般的な問い合わせフォーム espar form
サーバ側のPHP等環境 必要 不要
メール送信ミドルウェア 必要 不要
サーバ引っ越し時の作業 環境の再構築や再設定 不要
メール不達等のトラブルでの調査担当 制作会社様 弊社
スパム対策の担当 制作会社様 弊社

1ヶ月に1,2回しか発動しないフォームのために、環境構築の手間と責任を引き受けるのが最善でしょうか?それとも、html/cssに少し手を加えるだけで楽をすることを選びますか?espar form は、エンドユーザ様や制作会社様の負担がより少ない仕組みとなっています。

 

espar form のスパム対策

espar form を導入することで、スパムの多くを削減する事ができます。

 

問い合わせフォームにスパムが届く理由

そもそも問い合わせフォームから届くスパムは、サーバに設置したメール送信PHPプログラムを突かれることで発生します。

上記の例でいうと mail.php です。オープンソースの WordPress プラグインやメールフォームプログラムは、この mail.php に相当する「どこを突くとメールが送れるのか」が簡単に分かります。たとえ form の action 属性が「空」であってもです。

『攻撃者が、メール送信のPHPプログラムの在りかを特定し、外部から連続で叩く』

これがメールフォームにスパムが多い根本的な原因です。

 

espar form のスパム対策1 : メール送信プログラムの場所を隠蔽

espar form ではメール送信処理を弊社サーバで行いますが、どのように突けばスパムが送れるのかは容易には分かりません。

オープンソースではありませんし、form タグの action 属性にヒントがあるわけでもないからです。どこを突けばスパムが送れるか攻撃者は知る由もありませんから、突く場所が分からない以上、スパムを送りつけることは事実上不可能です。

 

espar form のスパム対策2 : HTMLのform仕様とは異なる独自仕様

仮に解析されて、espar form がどのサーバで処理をしているかが分かったとしましょう。しかしサーバが分かったところで、どのようにサーバを叩けばメール送信ができるかまでは分かりません。

一般的な PHP プログラムを使った form では、どのような叩き方をするとメールを送れるかは HTML の仕様上ある程度決まっています。そして、サーバとはそのフォームがあるサーバです。

サーバは自明で、かつ、メール処理を発動させる呼び方はHTML仕様で決まっている。これでスパムが届かないほうがおかしいというものです。だから PHP による問い合わせフォームはスパムが絶えないのです。

しかし espar form は、HTML の form 送信仕様とは全く関係のない独自仕様でサーバと通信しています。弊社の技術文書を見ない限り、メール送信処理を行う espar form のサーバと通信する方法は分かりません。

 

espar form のスパム対策3 : 送信元を制限する機構

仮に espar form サーバとの独自通信仕様が解析されたとしましょう。では、攻撃者は自前のサーバから espar form サーバに通信を行えるでしょうか?

いいえ。

espar form では、espar form が設置されたページ上から送られた通信でなければ応答ができない仕組みを標準で搭載しています。仮に www.example.com のサイト上に設置された espar form があるとすれば、攻撃者が自前のサーバを用意したところでそのサーバは www.example.com ではないため、espar form のサーバは通信を拒否します。

 

espar form のスパム対策4 : 独自のトークン機構

espar form の独自通信仕様では、トークンが重要な役割を担っています。トークンとは、espar form が発行する「メール送信権限」を意味するデジタルデータで、これを特別な処理をした上でサーバと通信しなければメール送信処理は発動しません。

また、トークンは短時間で破棄・再発行されます。仮に、espar form を設置しているページを解析してトークンを調べても、スパム送信する頃には当該トークンは無効となっています。

 

espar form のスパム対策5 : 連続送信の拒否機構

仮にトークンを取得され特別な処理も暴かれ、それを短期間で行われたとしても、心配はいりません。

espar form では、これら防御機構が破られてスパム送信攻撃を受けたとしても、管理画面上で連続送信制限ができるようになっています。際限なくスパムが連続的に届き続けることはありません。

 

以上から、espar form の導入サイトでスパムメールを送ろうと思えば、攻撃者は以下をクリアしなければならないことが分かります。

  • espar form のサーバのありかを調べる
  • espar form のサーバとの独自通信仕様を調べる
  • espar form のサーバと通信許可を与えられたサイトであることを詐称する
  • espar form のサーバが発行するトークンを横取りする
  • espar form のトークンに行われる特別な処理を解析する
  • espar form のトークン有効時間がきれるまでに処理を行う

全てクリアしなければ espar form でスパム送信はできません。しかもこれら全てを破られても、連続送信を制限する機構を備えています。このように、espar form は現存のスパムメール攻撃に耐性を持っています。

スパムフィルタでスパムを防ぐという戦略ではなく、そもそもスパムを理屈上送れない仕組みとしていることが espar form の特徴です。無論、espar form を正しく設置することが前提条件となります。設置の仕方については本マニュアルや弊社担当からのサポートが受けられます。