表紙 |
スパム対策 ― メールアドレス表記をデシマルコードでスパムはメールアドレスを収集されることにより、やってきます。アドレス収集の手段のひとつが、ウェブページをリンクをたどって自動的に巡回し、読み込んだ HTML ファイルのなかからメールアドレスを抜き出す「スパムロボット」です。そういうわけで、ウェブで公開する HTML ファイル(掲示板への投稿含む)にメールアドレスを出すと、どうしてもスパムが来るようになります。 パソコンウイルスも HTML ファイルからメールアドレスを抽出して利用します。こちらはパソコン使用者がブラウザで閲覧したときにパソコンに取り込まれた「インターネット一時ファイル」や「マイドキュメント」フォルダのファイルを中心に読みとるようです。Outlook Express のアドレスブックに登録されているメールアドレスや、こうやって抽出したメールアドレスに、ランダムでウイルスつきのメールを発信して感染を広めようとするわけです。 いずれにしても、メールアドレスをそのままの形でウェブ上で公開すると、いろいろやっかいです。しかし、連絡手段としてのメールアドレスを公開することは、やっぱり必要なことも多いんじゃないでしょうか、 メールアドレスを公開しつつ、スパムロボットやウイルスに利用されにくくするためには、HTML ファイルのメールアドレスを デシマルコード にするという方法があります。この方法で記述したメールアドレスは、ブラウザから見るのではなくテキストファイルとして読みとったときに、メールアドレスが「メールアドレス」として認識されにくく、抽出されにくいのです。(スパムロボットやウイルスのほうでこういう表記でも変換できる機能がついてしまうと防御できなくなりますが、現在はまだ有効なようです。) デシマルコードというのは、文字を HTML で表記するときにその文字のコード番号そのものを指定するタグです(日本語などについては使用する文字コードに依存)。HTML での文字表記としてはこのほかに文字エンティティというのがあり、これは特殊文字について「名前」で指定します。たとえば、「and」の意味がある & (ampersand) はデシマルコードでは " ですが、エンティティで書くと & となります。 「デシマル / decimal」は「10 進数による」という意味で、16 進だと「ヘキサデシマル」、2 進だと「バイナリ」となります。 このへんの表は で、たとえば kaburaya という文字列をデシマルコードに変換すると k が k、a が a、b が b ……などとなります。が、これを手作業でやるとたいへん面倒ですし、間違えやすいので、できるだけパソコンにやらせましょう。 テキストエディタのマクロでテキストエディタでマクロが使えるものであれば、この操作をマクロにやってもらうことができます。まずわたしがふだん使っている QX エディタでやってみます。 proc main dim s$ do while @Code > &h20 and @Code < &h7f s$ = s$ + "" + cformat$("%d",@Code) + ";" @MoveRightChar loop @Insert " " + s$ end proc 上の解説を行ごとに解説すると次のようになります。
同じことを秀丸エディタのマクロでやるとこうなります。プロシージャの始まりと終わりの行、および、変数の宣言がいりません。 $s = ""; while (code > 0x20 && code < 0x7f) { $s = $s + "" + str(code) + ";"; right; } insert " " + $s; 掲示板 CGI の部品上の結果と同じことを掲示板の投稿者のメールアドレスについても自動的に処理できます。うちの掲示板 CGI は KENT WEB の Sun Board の古いバージョンを改造したものですが、「メールアドレスの記入があった場合、これをメールアドレスのタグにする」という部分をこのように改造してあります。 # email をエンコード if ($email) { $email = 'mailto:' . $email; $email = '' . join(';',unpack('C*', $email)) . ';'; $name="<a href=\"$email\">$name</a>" } 要するに unpack で文字をコード番号に戻しているだけです。わたしはこういうのは詳しくないので、参考書を見ながら試行錯誤で。 オンライン変換ツール自分のメールアドレスだけちょこっとエンコードしたいかたは、こちらでどうぞ。「mailto:」部分が必要であれば、その部分もまとめて記入して変換します。 この CGI スクリプトはこちら。 ⇒ encode.zip
2004/02/15 - encode.cgi 修正。 (Last Modified: 2004/02/15) |
もどる |