当サイトで配布しているメールフォームプログラム「レスポンシブ・メールフォーム」において、「フォーム入力者への自動返信メールが届かず、管理者宛てのメールの差出人が管理者自身のメールアドレスになっている」という報告がお客様からありました。
要するに、以下のような状態です。
- フォーム入力者へ自動返信メールが届かない。
- 管理者宛てにはメールが届くが、差出人と宛先が同じ。
上記の症状の原因調査と結果について、備忘録も兼ねてこのページに記載しておきます。
経過1:最初の報告時
上記症状の報告を聞き、私はプログラムのソースコードを見直して確認しましたが特に不具合はなく、もし仮にそのような症状が起きるとしたら、
input type=”email”(メールアドレス入力欄)をinput type=”text”(1行テキスト入力欄)にしてフォームを送信する。
ということしか考えられない。
しかし、一般のユーザー(フォーム送信者)がわざわざそんなことをするとは考えられないので、おそらくその人が使っているブラウザの何らかの拡張機能が原因ではないか?という結論になりました。
その報告をしてくれたお客様自身は上記の症状が発生する当事者ではなかったため(クライアントのサイトらしい)、それ以上の原因調査をすることができず終わりました。
経過2:2番目の報告時
偶然にもその数日後に別のお客様からも同じ症状の報告があり、今回はその人自身が上記の症状が出る当事者であったため、私が用意した検証用のメールフォームで何度か送信テストをしていただき、原因の調査をしました。
その結果、判明したのはやはり、
ブラウザ上でinput type=”email”(メールアドレス入力欄)がinput type=”text”(1行テキスト入力欄)に書き換えられてフォームが送信されている。
ということでした。
補足説明:Webの仕様について
私のメールフォームに限らず他のプログラムでも、もっと言えばインターネット上のどんなページでも、ブラウザ上で自由に書き換えることが可能です。それはWebの仕様です。
もう少し詳細に言えばブラウザ上で処理しているもの、例えばHTML・CSS・JavaScriptはそのブラウザ上で自由に書き換えることが可能です。
もし仮に書き換えたとしても、それはその人自身のPC・スマホの画面上に反映されるだけなので、サーバー上のデータなどに影響が出ることはありません。
しかしメールフォームやBBSのようなプログラム、もっと大きなもので言えばTwitterやインスタなどのWebサービスの場合は問題が少々異なります。
HTMLなどを書き換えた状態でフォームを送信すれば、サーバー側で動作しているプログラムが想定外の動作をすることはありえます。
それによってサイトやサーバーに甚大なダメージが出るようなものであるなら、それは「脆弱性」と呼ばれます。
プログラム開発者はそのような可能性も考えて仕様を考え、コードを書く必要があるのです。
今回のケースの場合、私のメールフォームでは管理者宛てのメールの送信自体は実行されるようになっていますが、メールの送信自体がエラーになるメールフォームも存在するかもしれません。
症状の原因
話を戻しますが、上記の2番目の報告者の方が使っているブラウザの拡張機能を確認したところ、どうやらカスペルスキーの拡張機能(セキュリティ関係のソフトらしい)が最も怪しいということになり、その拡張機能をオフにしてフォームの送信テストをしてもらいました。
その結果、
- フォーム送信者への自動返信メールは届き、
- 管理者宛てのメールの差出人はフォーム送信者が入力したものとなっている。
となりました。つまりすべて正常ということです。
カスペルスキーの拡張機能について検索してみたところ、以下のようなページも見つかったのでおそらく間違いないと考えられます。
kl_ab.original_type=”email”
This attribute is added automatically at the end of the input tag because you have added the Kaspersky antivirus extension to your browser.
Kaspersky automatically adds kl_ab.original_type=” email” and change the input type from email to text.
Once you disable or remove the Kaspersky antivirus extension from your browser you won’t face this problem.
(Google翻訳での日本語訳)
Kasperskyアンチウイルス拡張機能をブラウザに追加したため、この属性は入力タグの最後に自動的に追加されます。Kasperskyはkl_ab.original_type=” email”、入力タイプを電子メールからテキストに自動的に追加および変更します。
Kasperskyアンチウイルス拡張機能を無効にするか、ブラウザから削除すると、この問題は発生しません。
html – Input type "email" change to "text" when it is in :focus state – Stack Overflow
最初の報告をくださった1番目の報告者の方にも確認してもらってみると、やはりその症状が起きていた人もカスペルスキーの拡張機能がブラウザにインストールされているとのことだったので、オフにしてフォームを送信したら問題の症状は出なかったとのことでした。
現時点での対処法
input type=”email”をinput type=”text”に変えることでセキュリティ上どんなメリットがあるのか私にはよくわかりませんが、上記の「補足説明:Webの仕様について」の部分で解説した通り、各ユーザーがブラウザ上でHTMLを書き換えることを防ぐことは絶対にできません。それがWebの仕様だからです。
ですので、現時点では「カスペルスキー拡張機能はオフにしてください」としか言うことができません。
もしかしたら次回アップデートで対応させるかもしれません。(この拡張機能を使っている人がどのぐらいいるかにもよります)
【後日追記】
レスポンシブ・メールフォームのバージョン8.0で対応されました。