「mailto:~」のメールアドレスリンクを簡易暗号化できるWordPress用のプラグインを書いてみたので公開

カテゴリー:javascript, WordPress, ウェブ 投稿日:

タイトルの通り。WordPressで「mailto:~」のメールアドレスリンクを簡易暗号化できるプラグインを書いてみました。

古来より、技術的な問題やセキュリティ上の問題でメールフォームを使用することができないサイトでは、<a href="mailto:メールアドレス">メールはこちら</a>といった、PCのメーラーを起動させるリンクを設置する代替策が用いられてきましたが、今日これをこのままやってしまうと、メールアドレスを自動収集するスパマーたちのボットによって、あっという間にスパムメールの餌食にされてしまいます。

一時期はメールアドレス部分をHTMLエンティティ(文字参照化)して分かりにくくする方法が有効な手段として用いられましたが、今ではそれでもスパマーの魔の手を逃れるには不十分。より解読が難しくなるようにJavascriptを使って簡易暗号化させる方法が使われるようになりました。そのようなコードを生成してくれる無料のWebツールもいくつかあります。ありがたい話です。

ただ、実際にそれを仕事で使うとなると・・・やはり第三者の善意で運営されているWebツールをアテにするわけにはいきません。例えばメールアドレスを変えたくなった時にそのツールが閉鎖されていたら対処できなくなります。

じゃあユーザーが自分でアドレスを変えられるジェネレーターがあればいい。ということで、とりあえずWordPressのプラグインとして使えるものをご用意してみました。


使い方

  • こちらのファイル(ml_hide.zip)をダウンロードして解凍。
  • 解凍してできた”ml_hide.php”を/wp-content/plugins/ にアップロード
  • WordPressのプラグイン管理ページで「mailaddress_hide」を有効化
  • あとは投稿記事内のメールリンクを設置したい部分で以下の例を参考にショートコードを記述。
    ※”mail_address”にメールアドレス、”link_str”にアンカーテキストを記載。

    動作例:
    メールはから。

  • 記事の中でなく、テーマファイル内で使用したい場合には、

    などとしてみてください。

  • なお、リンク用のアンカーテキストにメールアドレスを書いてしまうと対スパム的に意味のないことになってしまいます。”link_str”内には文字列だけでなくIMGタグも記述できますので画像にするなど工夫してみてください(必要に応じてバックスラッシュ「\」をダブルクォーテーションやシングルクォーテーションの前に置かなければならない場合がありますので念のため)。
  • Javascriptが動かない環境ではリンク部分が抜けた文字列になってしまうので、NOSCRIPTタグも併用した方が良いかもしれません。

動作説明

このプラグインは、以下のようなJavascriptコードを吐き出します。

“location.href:指定されたメールアドレス”という文字列を、一文字ずつアスキーコードに分解し配列化。リンクがクリックされた時にString.fromCharCodeで元の文字列に戻してevalで実行することにより、メーラーが開くようになっています。

ただし、アスキーコードをそのままhtmlソース上に見える形で置いておくとスパム耐性が低くなるので、あらかじめ乱数で一定の数を加算しておき、文字列に戻すときに引く形にしてあります。

また、オフセット量を代入する変数名(上記だと”ohc_bedbs”)と、文字列に戻す際に呼び出す関数名(上記だと”axslblrrbsgBc”)を、アクセス毎にランダムに吐き出すことで、更にもう少しだけスパム耐性を高めてあります(但しキャッシュ系のプラグインを使用している際はキャッシュ毎となります)。

所詮吐き出しているのはJavascriptなので解読不可能なものではありませんし、メーラーを開けばアドレスは相手にバレてしまうわけですが、普通にメールアドレスを記載するよりは、多分ずっと安全だとは思います。


さらっと書いた雑なソースですし、著作権を主張するほどのものではありませんので、そのまま盗用・転売などしない限りは、商用利用・改造含めフリーでお使いいただいて結構です。そのかわり、設置に関するご質問含め、サポートの類は一切致しませんので、何卒ご了承のほど。

まあ、WordPressを使っていて、メールフォームを使えない状況なんてそれほどないと思いますけど、外部Javascriptとして読み込む形にするなどの改造も容易かと思いますので、何かにご利用・ご参考いただければ幸いです。

参考にさせていただいたサイト



スポンサード リンク