>>スパム対策(その3)【2007/02/07(水)】[Web関連]『煽りと騙りはWebの華』とは言いますが、掲示板へのスパム書き込みは迷惑以外の何ものでもなく、敢えて例えるなら『Webの悪性腫瘍』とでも言いますか(^-^;放っておくと増殖して掲示板の機能をマヒさせるところなどそっくりです(笑)実際、スパム書き込みが横行して掲示板を閉鎖せざるを得なかった所もあると聞きますから、掲示板を設置しているサイト管理者にとって最も悩ましげな問題の一つだと思います。スパムメールも迷惑なことに変わりありませんが、人目に触れるという点では掲示板等へのスパム書き込みの方が深刻と言えるでしょうね。スパムの書き込みには基本的に2種類あるようで、一つは通常の書き込み同様に手動で一つ一つ書き込む(殆どがコピー&ペースト)もの、もう一つがスクリプトを利用してターゲットとなる掲示板等に自動で大量の書き込みを行うものに分かれるようです。迷惑なのが後者のもので、設定されたアドレスに向けて1日に数十以上の書き込みを行うものがあり、大抵は海外のサーバーからproxy(代理サーバー)を通して行われているようです。(閲覧にはパスワードが必要です)さて、前書きが長くなりましたが、実際の対策として一般的なのがIPアドレスによる規制だと思います。upが主流だった頃とは違い、現在は常時接続が一般的でIPアドレスもころころと変わったりしないことから有効と言えば有効なのでしょうけど、回線を繋ぎなおしたりproxyを使ったりすることで回避されてしまいます。回線の繋ぎなおしに対しては規制するIPアドレスのマッチを広くとれば対処できますが、今度は同じプロバイダを利用する無関係の方までもが規制されてしまいます。個人の掲示板等ではまだしも、企業等の掲示板では避けたいところです。いうくらい有るようです。いずれにしても対策を講じれば講じるほど一般の使い勝手は悪くなりますし、手動によるスパム投稿を完全に防ぐことは無理です。そこで、私の取った方針ですが、手動による書き込みは実質防ぎようがなく、また被害(?)も軽微である為、主に海外からのスクリプトを利用したスパムを極力防ぐ事をメインにしました。方法としては、投稿の際にランダムな数字を表示しそれを記入してもらうというものです。企業等のユーザー登録などで「画像の数字(文字)を記入してください」とあるものとほぼ同様です。普通にテキストで表示したのではコピー&ペーストされたり、スクリプトで比較的簡単に解析されてしまいますので、tableタグのbgcolorを利用して数字を表示することにしました。実際には下記のリンク先にあるものになります。FORM_CHECK_test上記リンク先の【テーブルタグによる数字の生成と入力チェックのテスト】の桁数に1〜30までの任意の桁数を入力して送信するとテーブルタグによる数字が表示されます。入力された数字の正否については【False】または【True】で表示されます。【フォームのチェック〜】とあるのは気にしないでください(^-^;特徴としては、テーブルタグによる数字の表示。数字には1〜60分の有効時間を設定。通常の使用ではサーバーにゴミを残さない。真の数字と偽の数字を作成し、javascriptで真の数字のみを表示させることが可能。一つのライブラリで処理しているので、他の掲示板等への組み込みが比較的楽。欠点として、一度有効な数字を入れれば有効時間内であればリロードが可能な為、連続投稿を許してしまいます。この辺は各掲示板などで同一内容の投稿を拒否する、同一IPからの連続投稿を拒否するなど対策が可能ですが、ワンタイムパスワードを有効にすることで防ぐことも出来ます。ワンタイムパスワードは投稿のあるなしに係わらず数字を表示する毎に任意のディレクトリに生成されますので、サーバーの負荷は増えてしまいます。*3もちろん、これでスクリプトによる連続投稿を完全に防げるわけではありません。テーブルタグによる数字の認識をスクリプトで自動的に行うのは不可能ではないからです。それでも、一般的なユーザーに対する配慮とスパム対策との落とし所としては無難な線を言っているのではないかと思っています。現在、Gojuの掲示板では通常の書き込みと思われるものはそのまま受け付け、スパムらしきものに対してのみ数字を記入してもらうようにしています。ntable_check.plは下記リンクからダウンロードして自由にお使い頂くことができます。lzhファイルにしてありますので適当なソフトで展開し、解凍されたntable_check.plをテキストエディタ等で開けば使い方が記載されています。0.0.6健全な(?)掲示板等の運営に少しでもお役に立てましたら幸に存じます。▽スパム対策(その2:追加)。