うろぐ

インターネットサービス&デジタル家電&デジタルカメラ&パソコンのレビュー

わたしのように複数のサイトを運営していますと、どうしても管理しきれない部分が出てきます。
とくに掲示板などは自由に書き込みが出来るようにあえてしていますので、スパム的な書き込みが後を絶たず、毎日定期的にチェックをしています。

Tt_linkそうした自由に投稿できるコンテンツの中で、ツーリングトークの相互リンクだけは設置以来3年以上、スパム行為がありませんでしたので徐々にチェックする回数が減ってゆき、この1年ほどはノーチェックの状態でした。このため、昨年2007年7月から現在に至るまでの間に、1600件を上回るスパムリンクを張られてしまいましたが全く知りませんでした。
先日、相互リンクを登録頂いた方からご連絡を頂き、驚くべき状態となっていることに気づきました。
2008/2/24に空き時間を利用して、急きょ削除プログラムと1バイト文字のスパムリンクの投稿を撃退するソースをプログラムに追加しました。

スパムリンクが100件ほど続いた後に正規の相互リンクの登録があるので、全て自分の目でチェックをしてから削除をしなければなりません。といって1600件をチェックするのは相互リンクプログラムを作成した時に付属させた1つずつリンクを削除する機能では手間がかかりすぎます。

そこで50件のリンクを1ページに表示して、表示されたリンクを1度にチェックしてスパムなら一括して削除するプログラムを作りました。類似のプログラムは以前に作っていたのでそれを改造するだけで出来ましたから、作成時間は1時間ほどでした。
プログラムよりも、1つずつチェックをして削除するかどうかを見極める作業が2時間以上かかり目も神経もつかれました。

今後もこれではたまらないので急きょ、1バイト文字のみの登録は全て登録されないようにするソースを追加することにしました。
はてなブックマークで「1バイト文字撃退」「掲示板 スパム 防止」など色々なワードを組み合わせて検索をかけたのですが、皆さんそうとうに困っている事実は分かるものの、このソースを追加すれば良いという決定打が出てきません。やむを得ないので、自信はありませんが自作をする事にしました。

ソースは単純です。
一番多いのがコメント欄にhtmlを直接入力してくるパターンでしたので、
if ($commet =~ /(http|https|ftp)/) {
としてコメント欄にURLが書かれていれば即座にエラーを返すようにしました。相互リンクの紹介文を書くコメント欄にURLを載せるのはNGでも大丈夫でしょう。
次に1バイト文字対策ですが、文字だけでなく記号も含まれている場合が殆どなので、
if ($com =~ /^[\w .!?\-\_\:\:\;\/\@\\\(\)]+$/) {
としてみました。

しばらくこれで運用をして、すり抜けるスパムがあれば解析してソースを改造して行こうと思います。

3月 1st, 2008

Posted In: ツーリングトーク

タグ: , ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です