
WEBサイトに直接メールアドレスを直接表示しない方法(スパムメール利用防止)
自分のメールアドレスはWEBページ上に表示せず、お問い合わせフォームを設置するべきです。
自動収集ツールなどにアドレスを取得されてしまうと、ウィルスや詐欺メールなどのスパムメールが大量に送られてきます。
表示させるなら、暗号化する・文字列を変える・@文字を変更削除するなど工夫をしましょう。
WEBサイトに直接メールアドレスを表示してはいけない
WEBページ上に自分のメールアドレスを表記する事がよくあります。
アドレスをクリックするとメールソフトが立ち上がって、直接メールが送信できる仕組みの場合もありますね。
しかし直接メールアドレスを記載した状態は大変危険です。
スパムメールの対象になってしまう
それはスパムメールの送信先になってしまう可能性が高いためです。
これは表記したメールアドレス情報が、自動収集プログラムや取得ツール等で察知・収集されてしまう事で起こります。
スパムは常に送信先のメアドを求めています。それをWEBページ上から収集している訳です。
大量の迷惑メールが送られてくる
メールアドレスの存在を発見すると、そのアドレスに対し迷惑メールやウィルスメールを送り付けてくるのです。
皆さんもご経験があると思いますが、大量に迷惑メールが来ると困りますよね。
こういったスパムの対象にならないようにするためにも、アドレスが取得されないようにする必要があります。
お問い合わせフォームを設置する
スパムメールが送信されない様にするには、極論WEBサイト上にメールアドレスを記載しない方が良いのです。
メールアドレスは表記せず、お問い合わせフォームなどを設置しておくべきでしょう。
お問い合わせフォーム例
上記フォームは動きません。サンプルです。
そうすればメールアドレスを記載する必要が無いので、収集されるリスクを回避することができますよね。
中にはフォーム入力が面倒なユーザーもいるでしょう。ですが正直、そんな人はそれなりです。
今はGoogleフォームなどを設置する事も簡単にできますので、できるだけフォームをつけるようにしたいものですね。
危険な状態
<a href="mailto:nodisplay@lpeg.info">nodisplay@lpeg.info</a>
上記は、何も工夫をしていないデフォルトのメールリンク記述です。
HTMLソース上にメールアドレスが丸ごと露出しており、一番危険な形といえますね。
ではアドレス表記をしつつ自動収集プログラムに収集されない工夫としては、どのような方法があるのでしょうか。
画像で表示
まずはメールアドレスをHTML上に直接記載せず、画像として表示させる方法です。一番簡単ですね。
メールアドレス収集ツールが取得できるのは、あくまでHTMLソース上に記載されたメールアドレス情報のみです。
ですので画像として表示していれば、HTMLソース上にはアドレス表記は存在しません。
画像でメールアドレスを表示した状態
画像を見たユーザーはメールアドレスがわかりますが、プログラムにはその画像上の表記まではわからないという訳です。
※画像のALT欄にはメールアドレスを入れない様にしましょう。
ユーザーがそのメールアドレス宛に直接メールを送信する場合、メールアドレスを手入力しなければなりません。
画像を置く場合はその旨の但し書きをしておきましょう。
Javascript暗号化ツールを利用する
一番お勧めなのは、Javascript使ってメールアドレスを暗号化する方法です。
専用ツールを利用すればjavascriptを簡単に生成でき、出力コードをHTML上の表示したい部分に貼り付けるとリンクが表示されます。
この方法ならユーザーにメール作成画面のメールアドレスを修正してもらう必要も無いので、おすすめです。
メールアドレス暗号化ツール
上記ページにメールアドレスを入れて、下の「暗号化」ボタンをクリックします。
すると以下の様なコードが生成されます。
生成コード
<script type="text/javascript"> <!-- function converter(M){ var str="", str_as=""; for(var i=0;i<M.length;i++){ str_as = M.charCodeAt(i); str += String.fromCharCode(str_as + 1); } return str; } function mail_to(k_1,k_2) {eval(String.fromCharCode(108,111,99,97,116,105,111,110,46,104,114,101,102,32, 61,32,39,109,97,105,108,116,111,58) + escape(k_1) + converter(String.fromCharCode(104,109,101,110,63,96,106,104,111,107,96,109,45,105,111, 62,114,116,97,105,100,98,115,60)) + escape(k_2) + "'");} document.write('<a href=JavaScript:mail_to("","")>お問い合わせメール<\/a>'); //--> </script> <noscript>(画像などを設置)</noscript>
生成されたコードをHTMLページのメールアドレスを表記したい部分にそのまま貼り付けます。
するとリンクテキストが表示され、クリックするとメールソフトが展開されます。
触るのはリンクテキスト部分だけ
下から3行目部分の「お問い合わせメール」のところは自由に変更下さい。
同じ位置のmail_to("","")のところは何かを入れたくなりますが、空白のままでOKです。
宛先には暗号化したメールアドレスが自動で入ります。
メールアドレスの暗号化
次はjavascriptを使わずメールアドレスを暗号化する方法です。
メールアドレスをエンティティコードと言う、数字や記号の組み合わせたコードに置き換えます。
以下のサイトで簡単に10進数コードにエンティティできます。
10進数コードでのエンティティ
例えばメールアドレスを10進数コードでエンティティ化すると、下記の様になります。
上記はあえて&の部分を大文字にしています。
上記コードをWEBページ上で表示した場合、きちんとメールアドレスとして表記されます。
それに対しHTMLソース上では10進数コードになっているので、プログラムに収集されにくくなる訳ですね。
記述例(あえて&を大文字にしています)
<a href="mailto:&#99;&#111;&#110;&#116;&#97;&#99;&#116;&#64;&#108;&#112;&#101;&#103;&#46;&#105;&#110;&#102;&#111;">&#99;&#111;&#110;&#116;&#97;&#99;&#116;&#64;&#108;&#112;&#101;&#103;&#46;&#105;&#110;&#102;&#111;</a>
上記の様にmailtoの位置にも10進数コードを入れます。ページ上はきちんとメールアドレスになります。
予測される可能性もある
エンティティ化も一定の法則で文字が変更されている以上、予測が可能です。
現時点でエンティティ化による暗号化効果は低いとされていますが、丸ごと出しておくよりはセキュリティは上がります。
ダミーテキストを入れる
ようは取得されるメールアドレスが実際のアドレスと違えば、スパムメールが届く事は無い訳です。
1文字でも違えばそれはもう存在しないアドレスですから、問題はありませんよね。
それを利用して、以下の様にダミーの文字列を追加する方法があります。
ダミーテキストを入れて、CSSで非表示にする
以下はメールアドレスのnoとdisplayの間に、testという文字を入れています。
HTML
<a href="mailto:メールアドレス">no<span class="no-display">test</span>display@lpeg.info</a>
CSS
.no-display { display: none; }
上記の様に適当な文字列をアドレス内に含ませてタグで囲っておき、CSSでそのタグ部分だけ非表示にしています。
この方法ならユーザーはきちんとメールアドレスがわかりますし、コピーする場合も実際に表示された箇所のみをコピーできます。
逆にプログラム側は、「no<span class="no-display">test</span>display@lpeg.info」というメールを取得する事になり、実際は存在しないアドレスになりますね。
ただしmailto:の部分にダミーテキストを入れる事はできないため、直接入れてもらうように促す必要があります。
mailtoにアドレスを入れる場合
<a href="mailto:no test display@lpeg.info">no<span class="no-display">test</span>display@lpeg.info</a>
mailtoにアドレスを入れたい場合は、上記の様にダミーテキスト込みで入れておきます。
その上で「メール送信時は宛先メールアドレスのtest部分を消して下さい。」の様な注意書きをしておくべきでしょう。
@マークを別の表記にする
メールアドレスは基本的に、アカウント名+「@」+ドメイン名の組み合わせですよね。
メール収集プログラムも、上記の形式になった文字列を探す仕組みが基本です。
ですので@の部分を別の文字(■など)にしたり、大文字@にしたりする方法が非常に簡単です。
<a href="mailto:nodisplay■lpeg.info">nodisplay■lpeg.info</a>
訪問ユーザーは、@の部分こそ違うもののメールアドレスと認識する事ができますよね。
それに対しプログラム側は、@が無いためにメールアドレスとして認識しずらい訳です。
ただしユーザーがそのメールアドレス宛にメールを送信する場合、ユーザーにて@部分を変更する必要があります。
把握してくるプログラムもある
以前は以下の様に大文字@をよく利用していましたが、今はあまりお勧めできません。
<a href="mailto:nodisplay@lpeg.info">nodisplay@lpeg.info</a> 上記はわかりにくいですが大文字「@」を使っています。
なぜなら、全角「@」を半角@として変換・収集できる自動収集プログラムやロボットも存在するようで、大文字@にしていても取得されてしまう可能性があるためです。
こう考えると■や▲などの記号でも、予測変換されてしまう可能性はありますね。
@のみを疑似要素で表示
メールアドレスの「@」のみ擬似要素で表示するというやり方もあります。
CSSのbefore属性で@部分を表記する方法です。
実際のHTMLソース上に@マークが表示されないため、ツールに収集されずらい特徴があります。
before疑似要素で「@」を表示する
HTML
nodisplay<span class="before_at">lpeg</span>.info
上記の様に記述すると、WEBページ上では「nodisplay@lpeg.info」と表示されます。
CSS
span.before_at{ position: relative; padding-left: 15px; } span.before_at:before{ position: absolute; top: -5px; left: 0; content: "@"; }
HTML上のメールアドレス表記にspanタグを入れ、@の入る位置に余白部分を作ります。
spanにbefore疑似属性を記述して、@を表示させています。
見た目には普通のメールアドレスとして表記されますが、アドレスをコピーすると当然ながら「@」が抜けた状態になります。
ユーザーに@を入れてもらう必要がありますね。
スパムメールとは
最後にスパムメールについても少し触れておきましょう。
スパムとは、無差別かつ大量に送り付けられる迷惑メールの一種です。
もちろん私にもよくスパムメールは届きます。送られる様になったら最後、メールアドレスを変えない限り止める方法はありません。
スパムメールは、ウイルス感染・個人情報の取得、フィッシング詐欺が主な目的です。
添付ファイルを開いたり記載URLをクリックするのが一番危険ですので、絶対にアクションを起こさないようにしましょう。
自分のアドレスをなぜ知っているのか?
スパムメールは、プログラムツールなどを使って取得されたメールアドレスに対して送信されるものです。
これらは主に、WEBサイト上に公開されているメールアドレスが収集先となっています。
スパムメールを送る人は、これらの操作・作業を自分の手でおこなっている訳ではありません。
メールアドレスの自動収集プログラムや生成ツールなどを使って、収集・送信までを全て自動化しているのです。
つまり相手は、誰のメールアドレスを取得したかは把握していません。とにかく詐欺やウィルスに引っかかれば良いだけで、相手は誰でも良いのです。
収集の決め手となるルール
この時収集対象となるのが、HTMLソース上の「mailto:」のタグ部分や「@」等です。
ここで対象がメールアドレスかどうかを判断しています。
そのためHTMLソースに直接メールアドレスを記述していると、スパムメールの対象になるのです。
スパムメールの危険性
大量に送られる事で通常の受信メール並びの邪魔をしてきます。
毎回消さないとメールフォルダを圧迫しますし、サーバーへの悪影響も懸念されますよね。
ウイルス感染の恐れ
スパムメールで一番注意が必要なのは、記載されているURLや添付ファイルです。
URLをクリックしたり、添付ファイルを開くと、ウイルスが仕込まれている可能性があります。
怪しいメールは絶対に中身を明けたり、アクションを起こしてはいけません。
URLをクリックする事で通知が相手に届き、実際に使われているメールアドレスだと判断されてしまう場合もあります。
するとさらに送られてくるスパムメールの量が増える場合もある訳です。
情報漏洩
一番はウイルス感染などによる情報漏洩のリスクです。
PCやスマホがウイルス感染すると、端末の個人情報や重大な情報が流出したり、ファイルが改ざんされたり削除される事もあります。
端末操作自体ができなくなり、解除するには金銭を要求されるケースも少なくありません。