スパムを弾くいくつかの方法
2006年08月04日22時46分43秒 インターネット
スパムの三大被爆地といえばメール、掲示板、ブログ(というよりそのコメントとトラックバック)。メールは振り分け、ブログは弾くサービスがあったりする。掲示板が一番遅れている気がする。そこでいくつか考えてみる。
1.コントロール名を変える
スパムを送る側から考えてみよう。まさか手動ではしないだろう。スクリプトでも書いて自動運転しているだろう。するとフォームを動かすプログラムに対して外からGETやらPOSTやらを投げつけるのが基本になっているはずだ。で、必要なのがコントロール名。
その場からその都度収集してるなら効き目は薄いが、同系の掲示板に対して固定の投稿をする形式なら、コントロール名を変えるだけで「同系」から外せる。
その簡易版はファイルの名前を変える。簡単だが効き目もあまりない。しないよりましだが。ただ、スパムというのは実際に投稿される以上に投げつけられていて、その中でコントロールがあってしまったものだけ目に見えているにすぎないと考えるべき。それを考えると焼け石に水か。
2.投稿内容から弾く
スパムの半分以上は英語というか日本語が入ってない。だから日本語の入ってない投稿は弾いてしまう。問題はどうやって日本語を判別するか。
日本語をそのまま正規表現にするのがベストだけど、環境によっては難しい。2バイト文字の存在で判別とか? しかしいずれにしても「意味のある日本語かどうか」を判別するのは困難だ。
「日本語が5文字以上」とかはいけても、その方法が読まれた場合、まじないのように今までの投稿の片隅に5文字の意味不明な日本語を付け足されたら終わりだし。そもそも日本語のスパムははじけない。
それよりAタグの存在を調べて弾くほうが簡単かつ効果があるかもしれない。スパムって大抵リンク張ってくるものだし。まあ掲示板の機能を期待してURIだけ書いてるスパムだと弾けなくて、それも弾こうとすると今度は普通にリンク張ることすらできなくなってしまうが…。
3.アクセスを制限する
最強なのは繋げられるIPアドレスを限定してしまうことだろう。これならどのIPアドレスなら繋げるかが知られても問題ない。IPアドレスは基本的に詐称できないから。でも不便な面が増えすぎるか。特に不特定多数用の掲示板では無理な対策だ。
それを多少緩めたのがパスワード制限。…パスワード付けるのが一番無難か。スパム送ってくるほうは仕事でやってるんだろうから、解析に手間がかかるようなら他の場所へ行くだろう。多分数撃ちゃ当たるの作戦なんだろうし。
スパムを弾くというのはスパムの費用対効果費を下げてやることなのかもしれない。
