キタジマさんのらくがき

  ●HOMEへ



[検索][検索解除]  [管理用]

▼ スパム対策
[8]
キタジマ 投稿日:2013-08-26 (月) 21:07:56
ID: YRCDM

はじめまして、キタジマと申します。
お絵かき掲示板を愛用させて頂いています。
大量のスパム投稿に悩まされているのですが、
らくがきひろばに何かしらのスパム対策をつける方法はあれば教えて頂けないでしょうか。
何卒よろしくお願い致します。

  

れいれい 投稿日:2013-08-27 (火) 01:25:20
ID: GBKVE

はじめまして、いらっしゃいませ。

そうですね、実はうちにも毎日のようにその手の投稿があるのですが、[6]の対策で取りあえずしのげてます。

スパム投稿の目的はURLを踏ませることがほとんどだと思うので、いっそ文字列「://」を制限の対象にして、どこかに「本文にURLを記載しないで」というような注意書きをしておくといいかもしれません。



キタジマ website 投稿日:2013-08-27 (火) 23:30:56
ID: YRCDM

早速のご返信ありがとうございます。
しっかりと管理されているだけでありがたい限りです。

ひとまずURLを禁止にしてみます。
文章にリンクがなく、ホームページ部分にリンクがあるスパムも多いのですが、
交流を目的として設置しているのでどうにも難しいですね。

自分が設置させて頂いた掲示板をURL欄に入れました。
また、スパムに埋もれるようであればどうか相談させて下さい。



れいれい 投稿日:2013-08-28 (水) 17:00:51
ID: GBKVE

ちょっと見させていただきましたが…すでにすごいコトになってますね;

[6]の対策に加えて、本文がすべてアスキー文字のみで書かれていた時も制限するようにしましょうか。
[6]で加えたさらに次の行に次の一文を追加します。

  1. 	$ipf ||= $data{ comment } =~ /^[ -~]*$/;

最終的に以下のように。

  1. 	$ipf=ipck($ip);
  2. 	$iWord = '特定の単語';
  3. 	( $iWord = quotemeta( $iWord ) ) =~ s/\\ /|/g;
  4. 	$ipf ||= $data{ comment } =~ /$iWord/;
  5. 	$ipf ||= $data{ comment } =~ /^[ -~]*$/;
  6. 	errmes(326)if $ipf&&$v{limip};

これでちょっと様子を見てみて下さい。



キタジマ website 投稿日:2013-08-29 (木) 22:37:59
ID: YRCDM

ご返信ありがとうございます。
制限IP欄も日に数十件来ています。制限IPは多数登録しているのでわからないのですが
NGワードの投稿も制限IP欄に飛ばされるのでしょうか。
個別に選択して削除するのは限界に達しつつあります・・

サイト利用者の1割くらいが外国人でたまに英字だけの投稿もあるのですが
そうしたものも引っかかってしまうのでしょうか。



れいれい 投稿日:2013-08-30 (金) 00:36:10
ID: GBKVE

正直IP指定による制限はもう意味がないと思ってます。
ありとあらゆる場所から書き込みありますので。
感染したサーバからの書き込みもあるんじゃないかなーとか思ったりもしてます。

上の方法だとやはりアスキー文字だけの投稿ならば、すべて引っかかってしまいます。
英字だけの投稿もあるとすれば、別の手段を考えなければなりませんね。

んー…

もしこれらのスパム投稿がフォームを経由せず、直接データを送りつけてきてるのなら、
URL入力欄を非表示にしてみるのもいいかもしれませんね。
これで普通に書き込みに来てる方達はURLが入力できないはずですが、
対してスパムはそんなの関係なしにURLを送りつけてくるはずなので、
URL情報の有無で弾くといいかもしれません。
もちろん、これはスパムがフォームを経由してないという前提の話ですが。

いかがでしょうか? もしいいと思われるなら、ちょっとコード書いてみます。
都合が悪いようなら別の手段、ですね。



キタジマ website 投稿日:2013-08-30 (金) 23:16:05
ID: YRCDM

URL入力欄を使う人は非常に少ないです。
無くしてしまっても大きな問題にはならないと思います。
おっしゃられたアイデアで弾けるならぜひ組み込みさせて頂きたいです!

URLリンクとアスキー文字投稿を禁止した今日は一件もスパムが表に出ず。
「制限IPからの投稿確認」に数十件着ていてひとまず成功ではあるのですが
放置するととんでもない量になりそうです。

ほぼスパムと断定できるものは自動で抹消することは可能でしょうか。



れいれい 投稿日:2013-09-09 (月) 01:55:55
ID: GBKVE

 すいません、遅くなりました;
そちらの掲示板、英字にアスキー以外の文字を混ぜての投稿も見られるようになって、
なかなかウザいですね…
さっそく上記の対策を施しました。
URLのほかにemail欄も非表示にした方がよさそうなのでそうしています。

以下に書き換える部分を記載します。
行番号は上記の改修を行ったものとして表示。

まずフォームを非表示にします。
2336行と2337行をコメントアウトします。#は必ず行頭に。

  1. #	print $hd.lngm(314).qq|$th"url" value="$url"$tf</tr>|;
  2. #	print"$s<$tr>$hd".lngm(313).qq|$th"email" value="$mail"$tf|;

誤解を招くので「コメント中のURLを自動リンク」も非表示に。
2364行の

  1. 	print qq|$s		<$check"link" value="on"$link$tm><$f2$tn>|.lngm(324).qq|*$s		<$check"cook" value="on"$cook$tm><$f2$tn>|.lngm(325)."$g"}

  1. 	print qq|$s		<$check"cook" value="on"$cook$tm><$f2$tn>|.lngm(325)."$g"}

に書き換え。

次にURLやmailのデータが送りつけられた時の弾く処理を。
370行目と371行目の間に次を挿入します。

  1. 	errmes( 326 ) if $data{ url } || $data{ email };

最終的に以下のように。

  1. 	$ipf ||= $data{ comment } =~ /^[ -~]*$/;
  2. 	errmes( 326 ) if $data{ url } || $data{ email };
  3. 	errmes(326)if $ipf&&$v{limip};

このケースにマッチした場合は投稿確認に保存することすらせずに遮断します。
これで回避できるといいのですが。



れいれい 投稿日:2013-09-09 (月) 02:19:42
ID: GBKVE

あ、すべてアスキー文字だった時の処理 (370行) はもうなくしてもいいかもしれません。
一応行頭に # を入れてコメントアウトしておいてください。

  1. #	$ipf ||= $data{ comment } =~ /^[ -~]*$/;

これで海外のご友人の投稿の誤削除も回避できるでしょう。



キタジマ website 投稿日:2013-09-09 (月) 21:14:23
ID: YM?AH

早速打ち込んでみました。感謝感激です!
ちょっと様子を見てみます。



れいれい 投稿日:2013-09-10 (火) 23:33:33
ID: GBKVE

なんか構わず投稿があるみたいですね…;
370行のコメントアウトは解除した方が良さそうです。



キタジマ website 投稿日:2013-09-17 (火) 22:06:11
ID: YM?AH

せっかくプログラムを修正して頂いたのに
スパムも中々やりますね・・







about...