HOME > Tips > JavaScript > メールアドレスをスパムボットから守る

メールアドレスをスパムボットから守る

Webページに記載されたメールアドレスは、スパムボット(スパムロボット)によって収集され、スパムメールの標的にされる可能性が大きくなります。

そこでその可能性を少しでも小さくするための対策が必要になります。

その一つの方法として、メールアドレスのエンティティ化(実体参照)があります。

実体参照には、文字実体参照と数値実体参照がありますが、数値実体参照(10進数 &#形式)の例を紹介します。

例えば、
example@example.com
と表示したい場合は、
&#101&#120&#97&#109&#112&#108&#101&#64&#101&#120&#97
&#109&#112&#108&#101&#46&#99&#111&#109
というように記述します。(表示が崩れるので、途中で強制的に改行してあります)

実際の表示例: example@example.com

これで少しはスパムボットの脅威から逃れられるはずです。

また、エンティティ化を全ての文字に対して行うのではなく、エンティティ化する文字としない文字をランダムに混在させるとか、エンティティの形式「10進数 &#」・「16進数 &#」・「10進数 %」を混在させるなどの対策で、さらに効果が期待できます。

さらに、エンティティ化したメールアドレスを直接(X)HTML内に記述するのではなく、外部のJavaScriptファイルに記述し、それを(X)HTMLに読み込むようにすれば、さらに効果が期待できます。

その一例を紹介します。

  • <外部JSファイルの記述例>
  •  
  • // メールアドレスを設定
  • mAddress = new Array();     //メールアドレスをエンコード(数値参照)したもの
  • mAddress[0] = '&#97&#98&#99&#64&#100&#101&#102&#46&#106&#112';     // 例:「abc@def.jp」をエンティティ化したもの
  • mAddress[1] = '&#103&#104&#105&#64&#106&#107&#108&#46&#106&#112';     // 例:「ghi@jkl.jp」をエンティティ化したもの
  • mAddress[2] = '&#109&#110&#111&#64&#109&#110&#111&#46&#106&#112';     // 例:「mno@mno.jp」をエンティティ化したもの
  •  
  • //メールアドレスにリンク(テキストメールアドレス)
  • function mail(adNo) {
  •      targetText = mAddress[adNo];
  •      document.write(targetText.link('mail
    to:' + mAddress[adNo]));
  • }
  •  
  •  
  • <(X)HTMLの記述例>
  •  
  • <script type="text/javascript">
  • //<![CDATA[
  • mail(0)
  • //]]>
  • </script>

「10進数 &#」形式の数値実体参照化ツールを作成しましたので参考にしてください。

メールアドレスのエンティティ化ツール

また、本格的にエンティティ化した方は、デスクトップアプリケーションのエンティティ化ツール、「HTMLエンティティ生成」がお奨めです。

UP