- 締切済み
スパムによる書き込みについて。
スパムによる書き込みについて。 掲示板に書き込む際に投稿キー(1~9の数字がランダムに4つ連続するもの)を 用いる設定にしても、未だ日本語によるスパムの被害に合っています。 質問1. このようなスパムはどのように投稿キーの門をくぐり抜けているのでしょうか? 質問 2. ユーザービリティが減少しようと構いません。更なる対策方法を教えて下さい。 BBSはKENT-WEB様のLight Boardをお借りしています。 よろしければご教示ください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- happy328
- ベストアンサー率0% (0/0)
オリジナルの投稿キーは最初は効果がありましたが、現在は解析されていてスパムには無力です。 この対応策として投稿キーをテキスト文字で表示する方法が最も簡単で効果的です。 ●light.cgi #------------------------------------------------- # 記事表示 #------------------------------------------------- -- 省略 -- # 投稿キー if ($regist_key) { require $regkeypl; my ($str_plain,$str_crypt) = &pcp_makekey; print qq|<tr><td><b>投稿キー</b></td>|; print qq|<td><input type="text" name="regikey" size="6" style="ime-mode:inactive" value="">\n|; #print qq|(投稿時 <img src="$registkeycgi?$str_crypt" align="absmiddle" alt="投稿キー"> を入力してください)</td></tr>\n|; ## ★コメントアウト print qq|(投稿時 <font color="$moji_col"><b>$regikey</b></font> を入力してください)</td></tr>\n|; ## ★追加 print qq|<input type="hidden" name="str_crypt" value="$str_crypt">\n|; } ●registkey.pl #------------------------------------------------- # 投稿キー #------------------------------------------------- sub pcp_makekey { local($str_plain, $str_crypt, @number); # 任意の数字4文字を生成 @number = (1 .. 9); srand; foreach (1 .. 4) { $str_plain .= $number[int(rand(@number))]; } $regikey = &h_z($str_plain); ## ★追加 # 時間を付加 $str_plain .= time; # 暗号化 $str_crypt = &pcp_encode($str_plain, $pcp_passwd); $str_crypt =~ s/\!/%21/g; } #▼ここから▼ sub h_z { local($_) = @_; s/0/0/g; s/1/1/g; s/2/2/g; s/3/3/g; s/4/4/g; s/5/5/g; s/6/6/g; s/7/7/g; s/8/8/g; s/9/9/g; $_; } #▲ここまで追加▲ #------------------------------------------------- # 投稿キーチェック #-------------------------------------------------
- bardfish
- ベストアンサー率28% (5029/17766)
こういうのはイタチごっこで対策してもすぐに対応されてしまいます。 投稿キーが出たばかりの頃、すぐに破られるであろうという予測は既にありました。 掲示板の利用を登録制にしてゲスト投稿は管理者認証が必要な方法にするしかないでしょう。 或いはスパム投稿をデータベース化し、投稿の際にマッチングさせスパムなら破棄するという方法も考えられます。