09時48分30秒 [Web関連]
誰でも投稿できる掲示板をウェブ上に用意しておくと、あっという間に大量のスパム投稿の嵐に見舞われます。
過去には、スパム投稿に対する有効な対策として、「日本語文字が全く含まれていなかったら拒否する」とか、「HTMLタグがあれば拒否する」などの方法がありました。……が、スパム投稿側も『その《スパム防止策》への対策』を施してくるので、最近はそれらの方法では防げません。外国からのスパム投稿であっても、適当な(特に意味のない)日本語文章を混ぜ込んで投稿してきますし、コメント本文中にはHTMLタグもURLも書いてこないものもあります。
上記の対策を施した上でもやってくるスパム投稿には、ブランド名を投稿者名やURLに含んだものが結構あります。(他にもあるでしょうけども、私が管理しているウェブサイトで、上記の対策をすり抜けてくるスパムには、ブランド名が含まれる投稿が多いです。)
で、これまでのところ、対症療法的な対処として、「禁止単語」をひたすら登録することでやってきました。例えば、「グッチ」とか「エルメス」とかの有名なブランド名(英語表記も含む)が含まれている場合には問答無用で拒否します。(これは、私が管理するサイトでは、このようなブランド名が話題になることはまずないからできる方法ですが。)
でも、それでも、ブランド名ではなく製品名だけを使って投稿されてくるスパムにまでは対処できません。キリがありませんし。
本来の利用者に手間が増えるのであまりやりたくはなかったのですが、仕方がないので、掲示板にアクセス制限を施すことにしました。基本(BASIC)認証で、IDとパスワードの入力を求めて、それがないと投稿できないようにします。IDとパスワードは、投稿直前にアナウンスするようにします。スパム投稿は、たいてい機械的に行われるので、投稿用のIDとパスワードをウェブ上に掲載していても、たぶん大丈夫だろう、と踏んでのことです。
※現状では、IDもパスワードも1種類だけの固定ですが、もしその方法が多く使われるようになれば、スパム投稿側も対処してくるでしょう。そのときには、「パスワードには今日の日付を2倍にした数字を」みたいな、言葉を解釈しないと入力できず、かつ、毎日変わるような仕組みにしないといけないかも知れません。
私が運営しているいくつかの掲示板では、たまたま閲覧処理と投稿処理でCGIが分割されていたので、投稿処理用のCGIにだけ基本(Basic)認証でアクセス制限をかけてみました。認証を通過するのに必要な情報は、「投稿する」ボタンがクリックされたタイミングで、JavaScriptのalertボックスを使って表示させています。
だいたい以下のような感じです。
まず、掲示板の投稿ボタンに、以下のようにonclick属性を追記しました。
これで、送信処理が実行される前に、JavaScriptでアラートボックスが表示され、認証通過に必要な情報が表示されます。もちろん、JavaScriptが実行されなければ表示されませんが、まあ、今の時代にJavaScriptが無効になっているブラウザはまずないだろうということで。IEで表示すると、以下のような感じで見えます。
次に、.htaccessファイルを作成して、投稿用CGIにだけ認証を求めるように記述しました。
上記の場合は、「post.cgi」というファイルへのアクセス時だけに、基本認証を施す記述です。こうすると、特定のファイルに対してだけアクセス制限ができます。
ここでは、AuthName欄に「IDは●●●でパスワードは***」と書いているので(※これはあくまでも閲覧者に見せるために書いたものであって、実際に認証処理に使われるIDとパスワードは別途.htpasswdファイルに暗号化して記述しなければなりません)、ブラウザが表示する認証用ダイアログにもそれが表示されます。この記述は、なくても良い(ない方が良い)とも思いましたが、まあ、先のJavaScriptのアラートボックスを見逃す人も居るかもしれないと思ったので、念のために書いてみました。Firefoxで表示すると、下図のように見えます。
これで、もしスパム投稿が基本認証も乗り越えてきたら、もうちょっと考えます。^^;
閲覧用CGIと投稿用CGIが分離しているフォーラム(掲示板)だと、閲覧用CGI側にアクセス制限を施す必要はないので、
というメリットがあります。
閲覧用と投稿用CGIが分かれていない場合は、全部を一括して制限するしかなく、その場合は、閲覧するだけで認証が求められるので、そもそも閲覧する人自体が減っちゃいそうです。(なので、閲覧用と投稿用のCGIが分かれていない掲示板では、今のところこの方法は使っていません。)
しばらくは、この方法で様子を見てみようと思います。
さて、どうなるかな。
まあ、少なくともしばらくの間は、これでスパム投稿は防げるとは思うのですが。
ちなみに、基本認証の設定方法やら、指定ファイルに対してだけアクセスを制限する方法については、過去にAll Aboutで解説記事を書いたので、詳しくは以下の記事をどうぞ。
◆基本認証でアクセス制限をかける方法(@All About ホームページ作成)
◆ログインページに他人がアクセスするのを拒否する方法(@All About ホームページ作成)
この日記へのコメントはお気軽に! コメント数:0件
(前の記事) « Newsweekの発行が、阪急コミュニケーションズからCCCメディアハウスに
前後のエントリ
< 旧 / 新 >
コメント数: 0件