どちら様もそうだと思うのですが,この掲示板も御多分に洩れずスパム書込 みが時々あります。そんなものを放置するわけにはいかないので削除するわけ ですが,Web Forum で通常に削除すると番号が飛んでしまいます。そこで痕跡 も残さず削除するために,時々ログを修正しています。 しかし,いつもできるわけではないので, とりあえず admin 経由で外部へ のリンクを消し去った殻が残るという場合もあります。このような殻の形を整 えて,隙間家具のような発言で埋めることになります。 そのためのマクロで #828を埋めてみました。
めざらさん、こんにちは。 近頃は、どこの掲示板にもスパムの書き込みが多いようで、管理は大変でし ょうね。とある掲示板では、「http://」が本文中にあると、エラーを返すよ うに仕様を変更したとありました。本文中に URL を書き込みたいときは、 http://の部分を2バイトにするようにと書かれています。 http://の2バイト部分は投稿後自動で半角に変換されるそうです。 このような対策はどうでしょうかねえ。(何もわからないのに口を出してしま いました。)
> とある掲示板では、「http://」が本文中にあると、エラーを返す
> 何もわからないのに口を出してしまいました。
> > とある掲示板では、「http://」が本文中にあると、エラーを返す> ふーむ,なるほど。これは効果がありそうですが,Web Forum は「参照先」> 欄があるので,本文だけが対象だと抑止力にはなっても決定的というわけでは> ないと思うんですよね。うちの掲示板の対策は参照先のURLが本文に含まれているとエラーにするように したので、ほとんどのスパムをはじいてくれています。当社比1/5以下かも。> また,書き込む人に何らかの面倒を強いるようになってしまうようで,少し> 気がすすまない……というか,ほんとの理由はそういう改造を加えるスキルが> ないことだったりして。(^_^;うちの方式ならほとんどの場合で制限が無いと思いますし、キーワードの追加 など拡張もできるのでよろしかったら試してみませんか。わりと単純なルーチン ですが効果がありますよ。メールで送りつけようかとも思いましたが短いので ここに貼り付けちゃおうかな。 あとはCGIファイル名の変更とかもやりましたがこちらのほうは効果の程は よくわからないですねぇ。
> うちの掲示板の対策は参照先のURLが本文に含まれているとエラーにするように> したので、ほとんどのスパムをはじいてくれています。当社比1/5以下かも。保存された過去のスパムを見てみると,ほぼ8〜9割方はこのパターンでし たので,かなり効果を期待できますね。ウチでは本家よりも効果があるかもし れません。(^^)> メールで送りつけようかとも思いましたが短いのでここに貼り付けちゃおうかな。いただけるなら,どちらでも。よい情報の共有を考えると後者でしょうか。 公に手口を晒してしまうことになってしまいますけれど…。
> いただけるなら,どちらでも。よい情報の共有を考えると後者でしょうか。> 公に手口を晒してしまうことになってしまいますけれど…。実はテキに手口を晒してしまうことに一抹の不安があったんですが、それよりも 公開することでよりよいアイデアなどが出たり、各自に独自の拡張をほどこして いけばより効果的かもと思い直しました。 ということで、追加するのは wf_ini.cgi の中の #--------------------------------------- # 入力チェック #--------------------------------------- のところで if ($in{'sub'} eq "" || $in{'sub'} =~ /^(\x81\x40|\s)+$/) { $err .= "題名の入力モレです "; } if ($in{'url'} eq "http://") { $in{'url'} = ""; } # --------- ここから --------------- $url2 = $in{'url'}; $msg2 = $in{'message'}; $msg2 =~ s/\r//g; $msg2 =~ s/\n//g; $msg2 =~ s/ //g; $msg2 =~ s/<BR>//g; ### $msg2 =~ s/<B|bR|r>//g; # これだとだめ $msg2 =~ s/<br>//g; $msg2 =~ s/<BR>//g; # $msg2 =~ s/<B|bR|r>//g; # これもだめ $msg2 =~ s/<//g; $msg2 =~ s/>//g; $msg2 =~ s/ //g; $url2 =~ s/\?.*//; # if ($in{'url'} ne "" && $msg2 =~ /$url2/ ) if ($url2 ne "" && $msg2 =~ /$url2/ ) { &error("不正なアクセスです"); } # 個別のURLを規制する if ($url2 =~ /oxx\.jp/ || $msg2 =~ /oxx\.jp/ ) { &error("不正なアクセスです"); } # --------- ここまで --------------- if ($err) { &error($err); } } ------------------------------------------------------------------- この辺を改造していなければこのように追加するだけでOKです。 大文字小文字を正規表現で纏めようとしましたがうまくいかないので このような羅列になってます。キーワードで規制するのも簡単に出来 ます。
> $msg2 =~ s/> //g;ありゃ、ここは小文字の<br>があったんですが改行になってしまいましたね。 その下の大文字の<BR>は残ってますね。何が違うんだろう。
> 公開することでよりよいアイデアなどが出たり、各自に独自の拡張をほどこして> いけばより効果的かもと思い直しました。どうもありがとうございます。大いに参考にさせていただきます。 ところで,コメントアウトされている部分で思ったところなのですが,> ### $msg2 =~ s/<B|bR|r>//g; # これだとだめこれが通らない理由というのは,選択条件が「B」か「bR」か「r」になって いるのでマッチしないのだと思います。1文字であれば s/<[Bb][Rr]>//g; の 方が簡単だと思いますよ。> # $msg2 =~ s/<B|bR|r>//g; # これもだめこちらも同様の理由かと思います。> { &error("不正なアクセスです"); }このメッセージはよいですね。他の理由…例えばアクセス禁止…と見分けが つかないのでテキも混乱するというところでしょうか。> この辺を改造していなければこのように追加するだけでOKです。改造なんてまったく施していないので,そのまま利用させていただけるかと 思います。特に訳のわからない海外からのリンク貼り付けは余程むかつくので, なかなか効果がありそうで嬉しいです。どうもありがとうございます。
> > ### $msg2 =~ s/<B|bR|r>//g; # これだとだめ> これが通らない理由というのは,選択条件が「B」か「bR」か「r」になって> いるのでマッチしないのだと思います。1文字であれば s/<[Bb][Rr]>//g; の> 方が簡単だと思いますよ。なるほど、こういうふうに書くんですか。正規表現は苦手なもので。(^^;> > { &error("不正なアクセスです"); }>> このメッセージはよいですね。他の理由…例えばアクセス禁止…と見分けが> つかないのでテキも混乱するというところでしょうか。最初は「不正なURLです」としていたんですがあまりにもわかりやすすぎる と思い直しました。少しはドキッとするかと。
中田昭雄さんの httpd を利用し,ローカルで試運転を行った結果, うまく 動作することが確認できたので, 今し方から konno さん方式の改造を施して 運用を始めました。効果覿面だと嬉しいな。 さて,これを機会に段階的にスパム対策改造を色々と試してみようと思いま す。次の手は regi のファイル名変更でしょうか。 konno さん,としきさん,あきろさん 御意見と対策案をありがとうございました。
> どちら様もそうだと思うのですが,この掲示板も御多分に洩れずスパム書込ウチのところは書き込もうとしている痕跡は通常、月に1〜2回あるんですが、 書き込みに成功しているのは半年に1回程度ですね。といいつつ、今月はまだ 1回も妖しい痕跡はなし。 ニフティのお仕着せ掲示板にしても、大量にスパム書き込みがあるところもあ れば、大量にあるけれどもまめに消しているので番号が飛び飛びになっていた り、あるいはそういうのがほとんどないところもあって、狙われているところ はどうして狙われているのかよくわかりません。 やはり、書き込まれないような方策を導入することを少しまじめに検討してみ た方がいいかもしれません。
> ウチのところは書き込もうとしている痕跡は通常、月に1〜2回あるんですが、
> 書き込みに成功しているのは半年に1回程度ですね。といいつつ、今月はまだ
> 1回も妖しい痕跡はなし。
> やはり、書き込まれないような方策を導入することを少しまじめに検討してみ
> た方がいいかもしれません。
> 書き込みさせない対策というのは,やはりプレビューを逆にしているやつ> でしょうか。でも,それだけだと弾くわけではないですもんね。要は、パラメータに正しい値を設定しないと書き込みができない訳です。 例えば、デフォルトでも、名前やタイトルが空欄だと書き込みできないです よね。それで、名前欄のパラメータ名をnameからname1に変えることにより、 敵が旧式にnameというパラメータをセットしてアクセスしてきても、name1の 方には何もセットされていなければ、結果的に名前欄が空欄とみなされて書 き込みを弾ける、という方法もあります。プレビュー反転も、それのバリエ ーションという感じです。 ただ、パラメータ名変更方式だと、変更量が多くなる可能性があります。ス クリプトを全部追いかけていないので、実は大したことはないのかもしれま せんし、一括置換とかって手も使えるかもしれませんが。それと、投稿フォ ームのHTMLのソースを見られてしまえば、パラメータ名が変更になって いるというのはすぐにわかってしまいます。一方、プレビュー反転方式だと、 パラメータ名の変更がないので、ちょっと見には気がつかれません。じっく り見たところで、日本語の読めない人には意味不明でしょうし。 ただね、いくら変更量が少ないといっても、スクリプトを5〜6ヶ所は変更 しなければなりません。それに比べれば、konnoさんの採用している書き込み スクリプト名変更方式だと、ファイルのリネーム1つと、スクリプトの書き 換え1つで済むはずなので、簡単といえば簡単。もちろんこれも、HTML のソースを見れば見破られてしまうという事で、強度はやや低めだけど。> むぅー。方策と言うからには,CGIの改造ですよね。まぁそうなんですけど。改造法もピンキリですから。 本文に日本語が全くなければ弾く、とか、本文にURLが4つ以上あれば弾 く、なんていう方法もありますけど、効果のどんなもんかな。
> 要は、パラメータに正しい値を設定しないと書き込みができない訳です。パラメータって,本来 CGI によってバラバラなはずですよね。 いろいろな 掲示板があって,いろいろなシステムが存在することを考えると,テキは自動 解析・自動取得できているのではないでしょうか。 海外から書き込まれているらしいケースって,和製の掲示板を知り尽くして 書き込んでいるとは思えないのですね。 うーむ,わたしのような素人が考えても分かるはずないのですが…。> 本文に日本語が全くなければ弾く> 本文にURLが4つ以上あれば弾くこれらの効果はごく一部に対してですね。…と言うか,海外からの書込みの パターンにのみ対応しているような雰囲気がありますね。むしろウチは海外か らは比較的少ないんです。KITI さんちとほぼ似たようなものが多いかな。> 改造法もピンキリですから。どの対策が効果的かを検証するために,改造が楽そうなものから順に導入し ていこうかと思います。まず,konno さん方式を試させていただこうかと。
> パラメータって,本来 CGI によってバラバラなはずですよね。 いろいろな> 掲示板があって,いろいろなシステムが存在することを考えると,テキは自動> 解析・自動取得できているのではないでしょうか。KENTさんのところの掲示板によると、狙われているのは圧倒的に、Joyful、 YY-BBS、WebForum等の、設置数が多いところのようです。つまり、1つの掲 示板でパラメータがわかってしまえば、あとはそれをそのまま使えば書き込 めてしまえるわけです。以前にそこのサポート掲示板でも出ていたのですが 「googleでwforum.cgiという文字列で検索してみれば?」 というようなのがあって、そこで引っかかってきたのがすなわち狙われる予 備軍といってよいのでしょう。 で、wforum.cgiがあるところwf_regi.cgiあり。 もしそこの掲示板で何も対策をとっていないのであれば、デフォルトのパラ メータに適切な値を設定して送り込んでやれば、いくらでも書き込めてしま えるという寸法です。なので、wf_regi.cgiのファイル名を変えてやるだけで も、一定の効果は見込めるかと。> 海外から書き込まれているらしいケースって,和製の掲示板を知り尽くして> 書き込んでいるとは思えないのですね。そりゃ、ある程度の解析はできるでしょうけど。 私も以前、掲示板書き込み用PADファイルを作るVzマクロというものを 作って公開していますが、あれだって最低限の解析を行っています。そうい うのを使えば、少なくともパラメータの数と種類と名称は全部わかるし、名 称がわかれば機能も見当がつきます。で、機能がわかるものだけでも全て値 をセットし、他は空欄にするかそれとも適当な値をセットして絨毯爆撃をか けるか、ということもやってやれないことはないでしょうけどね。 でも、あまりなさそうな気がするけど、気のせいだけで、敵は本当にそうい う方法を取っていたりして。なにせ、コンピュータは全自動でなんでもやっ てくれるのですから。
> KENTさんのところの掲示板によると、狙われているのは圧倒的に、Joyful、> YY-BBS、WebForum等の、設置数が多いところのようです。そういえば,わたし設置してから数えるほどしか KENT さんのサポート掲示 板を覗いていませんでした。寄付もしないならせめて情報の提供くらいしてみ ようという意志すらないという情けないユーザーですね。とほほ。> で、wforum.cgiがあるところwf_regi.cgiあり。テキが wf_regi.cgi にじかにアクセスしてくるらしいというのは, 確か, としきさんの報告でしたね。それを読んだ時に最初に考えたのがリネーム対策 というところまではよいのですが,まるきりそれを実行に移せないというのが ちと情けなかった自分です。腹は立つけれどあまり苦にしていなかったのでし ょうね。つくづく時間を無駄にしたものですが,ここにきてようやく対策する 気持ちが強くなってきたのは,自分の余裕のなさでしょうか。> 少なくともパラメータの数と種類と名称は全部わかるし、> 名称がわかれば機能も見当がつきます。変数の名称のうち, sub,email,url,name,message あたりの発言に必要 な項目ってみな英語ですもんね。これは確かに分かりやすい。 oya とか ango とかみたいに日本語ローマ字にしていたら,状況はかなり変わっているかもし れないですね。
> で、wforum.cgiがあるところwf_regi.cgiあり。> もしそこの掲示板で何も対策をとっていないのであれば、デフォルトのパラ> メータに適切な値を設定して送り込んでやれば、いくらでも書き込めてしま> えるという寸法です。なので、wf_regi.cgiのファイル名を変えてやるだけで> も、一定の効果は見込めるかと。このwf_regi.cgiへの直接書き込みってほんとにあるのかとか、ファイル名 の変更でどの程度効果があるものなのか疑問に思ってたんですが、簡単に 検証する方法を思いつきました。(^_^) 実運用は変更したファイルでやってるわけだし、うちの場合wf_log.cgiも 変更しているので、変更前のwf_regi.cgiを元のまま置いておけばここに アクセスするのはスパムであり、そのログはやはり変更前のwf_log.cgiに 書き込まれてテキから見ればエラーにならず書き込み成功したように見え るというわけです。 これでスパム専用ログも取れるしテキへのめくらましにもなるし、検証も できて一石三丁の凄いアイデアだと思うんですが。(^_^) とりあえずうちの板には仕込んでみました。どうなるかなぁ、ワクワク。
> これでスパム専用ログも取れるしテキへのめくらましにもなるし、検証も> できて一石三丁の凄いアイデアだと思うんですが。(^_^)konno さん,冴えまくってますね。こちらからではまったくわからないので レポートをお待ちしております。統計にするのも一発ですよね。(^^)
> konno さん,冴えまくってますね。こちらからではまったくわからないのでボケまくってました。(^^;; 良く考えたら(良く考えなくても)各種変数を設定しているのはwf_init.cgi なので、wf_regi.cgiだけだと動かないですよね。今見たらwf_regi.cgiの冒頭 には require './wf_init.cgi'; はあるので、スパム用に設定したwf_init.cgi も置く必要がありますね。(^^;
> 良く考えたら(良く考えなくても)各種変数を設定しているのはwf_init.cgi> なので、wf_regi.cgiだけだと動かないですよね。今見たらwf_regi.cgiの冒頭> には require './wf_init.cgi'; はあるので、スパム用に設定したwf_init.cgi> も置く必要がありますね。(^^;ためしに、今、SPAM書き込みをしてみようとしたら 「不明な処理です」 と言われてしまいました。 wf_regi.cgiを追いかけてみたら、デフォルトでは、一番最初のモードチェック の部分にしか出てこないメッセージのようです。つまり、ここではねられてし まっているということは、やっぱり、各種変数が正しく設定されていないので しょう。 はやく落書きできるようにしてください。(笑)
> ためしに、今、SPAM書き込みをしてみようとしたら> 「不明な処理です」> と言われてしまいました。> はやく落書きできるようにしてください。(笑)げげ、スパマーの正体ってもしかして。(笑) いちおー 専用のwf_init.cgiを入れてみましたが、試してないので 某スパマーの書き込みを待つか。
> 某スパマーの書き込みを待つか。書き込めたようです。(笑) ログを確認してみてください。
書き込めたは書き込めたようですが。> いちおー 専用のwf_init.cgiを入れてみましたが、試してないのでログファイルは専用ではないのですか? 表から見えてしまっているのですが。 あと、コメントツリー関係が変な表示になってしまっていますが、これは私 の作ったPADの方が悪そうです。自分のところの実験とか、昔、あじゃさ んのところで試したときはうまくいったんだけど、なんか変だなぁ。 とりあえず、削除しておいてください。
> 書き込めたは書き込めたようですが。げげ、本ログのほうに書き込まれてしまってる。なぜ?> ログファイルは専用ではないのですか?> 表から見えてしまっているのですが。いや、いちおー専用にしたつもりなんですが、変だなぁ。 差し支えなかったらどういう手口で書き込んでるのか教えていただけると なにか分かるかも。> あと、コメントツリー関係が変な表示になってしまっていますが、これは私> の作ったPADの方が悪そうです。自分のところの実験とか、昔、あじゃさ> んのところで試したときはうまくいったんだけど、なんか変だなぁ。たぶんうちの書式が他のと違ってるのかもしれないですね。> とりあえず、削除しておいてください。スパムですからね〜(ぉ
> 差し支えなかったらどういう手口で書き込んでるのか教えていただけると> なにか分かるかも。以下のようなバッチファイルで書き込んでいます。 HTTPOUT.EXE -post d:\PAD.TXT -text -o d:\testout.html -url http://hpcgi3.nifty.com/tamaneko/wf_regi.cgi アンダーバー2つにすれば本ログでアンダーバー1つは裏ログ、ということ で間違いありませんよね? これが誤解だと、ごめんなさいするしかないのですが。> たぶんうちの書式が他のと違ってるのかもしれないですね。かもしれませんが。 使ったPADファイルは、私のサイトのVzの部屋で公開しているマクロを wforum.cgiの出力結果のHTMLファイルに適用してでき上がったそのまま のものに必要事項を記入しただけのものです。改行方式のところは選択式な ので、列挙された中からpreだけ選んで他のものは削除しました。 このマクロ、使ってみればわかるのですが、パラメータが全て、改行で区切 られて縦に並びます。確か仕様では、それら改行は空白に置換されると聞い た記憶があるのですが、なんとなくの感触では、その後の解析がうまく行っ ていないような感じです。つまり、コメント元を指定するパラメータで &no=new を指定しているのですが、スクリプトに入ってくると本来$in{'no'}="new"に ならなくてはいけないところが$in{'no'}="new "と余分な半角空白1個がく っついてしまい、そのため解析失敗、というパターンが想定されます。 でも、ではなぜ自分のところの実験ではうまく行っているのか、というのが よくわからないのですが。もしかして、パラメータの前後の空白を除去する ルーチンでも入れたかなぁ。あるいは、wforumのスクリプトを新しいバージ ョンにしてあるので、それにはこの種のルーチンが仕込まれているとか。 あと、かつてあじゃさんのところで実験した時にうまくいった理由としては、 あそこは改行方式の選択が除去されていますから、もしかしたらその関係か もしれません。 一応、これに対するこちら側(スパム書き込み側)の対策も考えてあります ので、仮にこれが原因だとすれば、特にkonnoさんのところでは何もされなく ても次はうまく行くものと思っております。 ということで、konnoさんのところで準備が整い次第、スパム2号が発射され ることになるでしょう。 #某国のミサイルよりも射程は長いよ #なにせ、世界中どこにでも届くから
> 以下のようなバッチファイルで書き込んでいます。> HTTPOUT.EXE -post d:\PAD.TXT -text -o d:\testout.html> -url http://hpcgi3.nifty.com/tamaneko/wf_regi.cgiうーむ、これを見てもなぜ本ログの方にいったのか全然わからないですねぇ。> アンダーバー2つにすれば本ログでアンダーバー1つは裏ログ、ということ> で間違いありませんよね?げげ、なぜ変更した名前がわかるの!? と思ったらプレビュー画面でしっかり 出てますねぇ。てっきり表面に出ないものだと思ってました。(^^; うーん、 これでは粘着な業者には効果ないかも。> このマクロ、使ってみればわかるのですが、パラメータが全て、改行で区切> られて縦に並びます。確か仕様では、それら改行は空白に置換されると聞い> た記憶があるのですが、なんとなくの感触では、その後の解析がうまく行っ> ていないような感じです。つまり、コメント元を指定するパラメータで> &no=new> を指定しているのですが、スクリプトに入ってくると本来$in{'no'}="new"に> ならなくてはいけないところが$in{'no'}="new "と余分な半角空白1個がく> っついてしまい、そのため解析失敗、というパターンが想定されます。生ログでは、1066<>new<br><><> となっています。 (<br>は半角) なので、改行が、<br>に変換されているみたい。うちもだいぶ弄っている のでそのせいかもしれませんが。 あと、新規発言は new ではなく no だと思うんですが、うちだけ? あとは最後の方が <>pre<br> @pre<br><><> となってますが @pre が よぶんだとおもいます。> 一応、これに対するこちら側(スパム書き込み側)の対策も考えてあります> ので、仮にこれが原因だとすれば、特にkonnoさんのところでは何もされなく> ても次はうまく行くものと思っております。本ログと末ログが転倒しているうちは実験も中断ですねぇ。(^^;> ということで、konnoさんのところで準備が整い次第、スパム2号が発射され> ることになるでしょう。おお〜こわ、これは別な対策を立てたほうがよさそう。(^^;
> うーむ、これを見てもなぜ本ログの方にいったのか全然わからないですねぇ。wf_init.cgiでの設定誤り、というのが可能性の高そうなシナリオですが。> げげ、なぜ変更した名前がわかるの!? と思ったらプレビュー画面でしっかり> 出てますねぇ。てっきり表面に出ないものだと思ってました。(^^; うーん、> これでは粘着な業者には効果ないかも。というか、wforum.cgiの出力したHTML分にしっかり書いてありますがな。 まぁ毎回解析されるものでもないでしょうから、次に解析されてしまうまでは セキュアな環境を維持できるでしょう。> 生ログでは、1066<>new<br><><> となっています。むぅ、preを指定したせいかなぁ。 ほかの指定とか無指定ならうまくいく可能性もあるでしょうし、もっと確実に は、オプションの指定の部分の改行を全て削除して、長い1行にしてしまえば よいでしょう。> あと、新規発言は new ではなく no だと思うんですが、うちだけ?あれ? <input type='hidden' name='no' value="new"> ってなってませんか?> おお〜こわ、これは別な対策を立てたほうがよさそう。(^^;konnoさんのところで導入済みの、URLと同じものが本文に含まれていたら、 というのは比較的強力だと思いますよ。
> wf_init.cgiでの設定誤り、というのが可能性の高そうなシナリオですが。同じフォルダに2種類のCGIを置いたのが問題な気がするんですよね。 やはり別環境にするべきかも。> あれ?> <input type='hidden' name='no' value="new">> ってなってませんか?そういう記述はありますが、他の生ログでは no になってるんですよ。 板塀の生ログは new になってるんですか。> > おお〜こわ、これは別な対策を立てたほうがよさそう。(^^;> konnoさんのところで導入済みの、URLと同じものが本文に含まれていたら、> というのは比較的強力だと思いますよ。これはミサイルこわいというネタでして、早急にテスト環境を立ち上げなきゃ いかんなぁということで、ほとんど使われていない多摩BBSの板をつぶして その跡地にバラックのスパムテスト板を建てようかなと思ってます。
> そういう記述はありますが、他の生ログでは no になってるんですよ。> 板塀の生ログは new になってるんですか。なっていません。 確かに、noになっています。ということは、ここも何かオプションの解析に 失敗した名残りという事なのでしょう。
> なっていません。> 確かに、noになっています。ということは、ここも何かオプションの解析に> 失敗した名残りという事なのでしょう。wf_regi.cgi を見ていたらこんな記述がありました。 ## --- 親記事の場合 if ($in{'no'} eq 'new') { unshift (@lines,"$count<>no<>0<>$in{'sub'}<>$in ^^^^ 生ログには $no ではなく 'no' そのままを書き込んでいるようですねぇ。 とすると、直書きするときは 'new' でなく 'no' がよさそうな気がします。 えと、多摩BBSを閉鎖し、その跡地にやっとミサイル迎撃の準備が出来ました。 http://hpcgi3.nifty.com/tamaneko/tama/wf_regi.cgi このURLで試してみてください。 だいぶ間が開いてしまいましたが実はBBS閉鎖後に新たなスパム対策がひらめ いてしまって。簡単に言うとスパムは別ログにするというものです。その検証 のためにタマ猫BBSリンク集を活用しました。 http://hpcgi3.nifty.com/tamaneko/tamabbs.cgi 狙い通りならこれで全スパム数と直書き書き込み数の状況がわかると思います ので、早く直書きスパムが書き込まれて欲しいなと。(笑 上のURLを見ればわかりますがすでに全ての掲示板に仕込んでしまったので どれに書き込んでもかまわないようになっているはずです。ファイル名も wf_regi.cgi と wf__regi.cgi のどちらでも同じ結果になると思います。
> > wf_regi.cgi を見ていたらこんな記述がありました。> ## --- 親記事の場合> if ($in{'no'} eq 'new') {> unshift (@lines,"$count<>no<>0<>$in{'sub'}<>$inえと、これって、書き込み時にパラメータnoが'new'ならば、という条件判定 だと読んだんですが、そういうことではないのかな。だから、やっぱりnewが 正解のような気がするのですが。> http://hpcgi3.nifty.com/tamaneko/tama/wf_regi.cgi> このURLで試してみてください。試してみましたが、CGIエラーということで正常に書き込めません。 ブラウザからアクセスしてみてもニフティがエラーを返してきます。 本来は、CGIの方が「不明な処理」を返すはずだと思うのですが。 と思ったら、今日のテーマのほうも書き込みしようとしたらCGIエラーに なるので、もしかしたらこれで仕様どおりなのかもしれません。 #んなわきゃないって> だいぶ間が開いてしまいましたが実はBBS閉鎖後に新たなスパム対策がひらめ> いてしまって。簡単に言うとスパムは別ログにするというものです。その検証どうやって判別しようとしているんだろう。 差し支えなければ、あとで教えてください。 #思いっきり差し支えそうだけど
> えと、これって、書き込み時にパラメータnoが'new'ならば、という条件判定> だと読んだんですが、そういうことではないのかな。だから、やっぱりnewが> 正解のような気がするのですが。パラメータnoを'new'にしているところをソース上で探しましたがみつけられ ませんでした。うーん、ますますわからなくなってしまった。> 試してみましたが、CGIエラーということで正常に書き込めません。> ブラウザからアクセスしてみてもニフティがエラーを返してきます。げげ、ポカミスしてました。すみませんでした。スパムが全然こないなぁ なんて思ってたらエラーで撥ねてたんですね。(^^;; if ($err2 == 0) { $ango = 'spam'}); } ↓ if ($err2 == 0) { $ango = 'spam'; } こんなしょうもないミスをするなんて疲れてますねぇ。(^^;;> どうやって判別しようとしているんだろう。> 差し支えなければ、あとで教えてください。> #思いっきり差し支えそうだけどあ、いや、スパムの判別は前のルーチンのままですが、エラーにする代わりに $err2 =2 とし、通常の書き込みなら $err2 =1 を返します。 そしてこの値が 1 以外なら別ログに分枝させるルーチンを追加したわけです。 もし、wf_regi.cgiに直書きするとこの値が 0 なので、区別できるという理屈 です。 たぶん直ったと思いますのでもういちどお願いします。m(__)m
爆撃は明日、帰宅してから行うこととしますが。> パラメータnoを'new'にしているところをソース上で探しましたがみつけられ> ませんでした。うーん、ますますわからなくなってしまった。これは、書き込むときに指定する値だと思いますよ。 wforum.cgiを表示したときのパラメータの値がそうはなっていませんか?> そしてこの値が 1 以外なら別ログに分枝させるルーチンを追加したわけです。> もし、wf_regi.cgiに直書きするとこの値が 0 なので、区別できるという理屈> です。? なんかうまくいかないような気がするけど、たぶん気のせい。 konnoさん、自分でテスト書き込みしたらうまくいったんですよね。
> これは、書き込むときに指定する値だと思いますよ。> wforum.cgiを表示したときのパラメータの値がそうはなっていませんか?えーと、見たことがないんですが、新規投稿のときに表示されるんですよね。> ?> なんかうまくいかないような気がするけど、たぶん気のせい。> konnoさん、自分でテスト書き込みしたらうまくいったんですよね。気のせいではありませんでした。自分でも書いてからあれっ?て思い、 見直してみたらこれでは条件は成立しないですね。ということでこの 件は次の発言で。 #テストはスパマーしだいなの(^^;
> えーと、見たことがないんですが、新規投稿のときに表示されるんですよね。普通は表示はされないと思います。 新規投稿のフォームの部分のHTMLソースに記述されています。 今日のテーマだと、こうなってますよね。 <b><font size=4>新規投稿・スレッド作成。メッセージをどうぞ・・</font></b></a></div> <p><form action="./wf__regi.cgi" method="POST"> <input type=hidden name=mode value="form"> <input type=hidden name=page value="0"> <input type=hidden name=no value="new"> ******ここ↑
> <input type=hidden name=no value="new">> ******ここ↑ああっ そうかぁ。( ゜゜;) やっとわかりました。どうもお騒がせしました。(^^;;
> たぶん直ったと思いますのでもういちどお願いします。m(__)mということで、多摩美跡地(違)に撃ってみましたが、なんか、ログファイル のオープンエラーと出ます。 アンダーバーが1つのほうと2つのほうの両方とも、同じ結果です。 私が何かミスしていなければ、tamaディレクトリに置かれているinit.cgiでの ログファイル指定誤りが考えられます。 しかたないので、今日のテーマの方に撃ってみました。 爆撃目標はアンダーバー1個と2個にそれぞれ1回ずつ。 爆撃手段は#861と同じで、違うのはURLのみ。 結果はごらんのとおり。 あとはよろしこ。
> ということで、多摩美跡地(違)に撃ってみましたが、なんか、ログファイル> のオープンエラーと出ます。> アンダーバーが1つのほうと2つのほうの両方とも、同じ結果です。> 私が何かミスしていなければ、tamaディレクトリに置かれているinit.cgiでの> ログファイル指定誤りが考えられます。美術館跡地(違)には別ログしかないので同じURLでない場合はエラーになりま す。なのでこれは正常です。といいたいところですが、実際は判定ミスのため で、本当は別ログに入ると思ってたの。(;_;)> しかたないので、今日のテーマの方に撃ってみました。> 爆撃目標はアンダーバー1個と2個にそれぞれ1回ずつ。> 爆撃手段は#861と同じで、違うのはURLのみ。> 結果はごらんのとおり。そもそも理屈からして間違えていたので当然本ログに入りますよね。(;_;) まあ、シンドラーのリフトみたいに人命にかかわらないのでおきらくですが。 でもおかげで新たなとんちが湧きました。レジが2つあるんだからスパマー 用のほうは $err2=0 を入れておけば分別できるじゃん。 ということで直してみました。お手数ですがよろしくおねがいします。m(__)m ps wf_regi.cgi のほうにお願いします。(^^;
> ということで直してみました。お手数ですがよろしくおねがいします。m(__)m爆撃を敢行しました。 アンダーバー1個のほうはうまく行ったようです。 あとで確認しておいてください。 アンダーバー2個のほうはまだダメのようです。 ERROR ! Open Error: ./wf__log.cgi というメッセージが帰ってきました。ログファイル名をセットした変数を追い かければ、どこがおかしいかわかるかな。
> 爆撃を敢行しました。> アンダーバー1個のほうはうまく行ったようです。> あとで確認しておいてください。確認しました。狙い通りに別ログに入ってくれました。(^_^) ただ、tamabbs.cgi の表示がされなかったのですが、これも私の ポカミスで変数処理を間違えていました。(^^;> アンダーバー2個のほうはまだダメのようです。> ERROR !> Open Error: ./wf__log.cgi> というメッセージが帰ってきました。ログファイル名をセットした変数を追い> かければ、どこがおかしいかわかるかな。これは多摩備のことですよね。ログが存在しないからですが、普通、ログが 無い場合、新規に作成されましたっけ。とすれば、ほかにも足りないcgiが あるのでそこでエラーになってるのかも。 アンダーバー2個のほうは普通のレジなのでテストはアンダーバー1個の ほうでお願いします。m(__)m おかげさまで、レジ書きスパムの検証はうまくいったようです。どうも ありがとうございました。m(__)m
> これは多摩備のことですよね。ログが存在しないからですが、普通、ログが> 無い場合、新規に作成されましたっけ。とすれば、ほかにも足りないcgiがこれだ! ログは自動では作成されません。 オリジナルの圧縮ファイルを見ていただくとわかりますが、ヘッダ情報のみ を記録した空ログを置いておき、スクリプトでは追加書込みのみ行うような 形になっております。> アンダーバー2個のほうは普通のレジなのでテストはアンダーバー1個の> ほうでお願いします。m(__)mでも、アンダーバー2個の方も閉じてしまっているんですよね、多摩美って。 なら、どっちでもいいじゃん、という気もしないでもないのですが。 そういう意味ではないのかな。 今日のテーマを使ってのテストの場合、ということかな。 それなら、ご心配には及ばないというか、もうそちらへのテストはしないつ もりですから大丈夫です。
> ログは自動では作成されません。> オリジナルの圧縮ファイルを見ていただくとわかりますが、ヘッダ情報のみ> を記録した空ログを置いておき、スクリプトでは追加書込みのみ行うような> 形になっております。あ、やっぱり。今回の別ログでは0バイトのファイルを作成して置いたんで すが、テスト書き込みでは問題なさそうでした。> でも、アンダーバー2個の方も閉じてしまっているんですよね、多摩美って。> なら、どっちでもいいじゃん、という気もしないでもないのですが。> そういう意味ではないのかな。今の仕様ではレジ両方使ってるんですよね。一つに纏めるやり方が思い つかないので。> 今日のテーマを使ってのテストの場合、ということかな。> それなら、ご心配には及ばないというか、もうそちらへのテストはしないつ> もりですから大丈夫です。テストがうまくいったのでもうその必要もないと思うんですが、肝心の スパムがまだ1件しかこないので本当に問題ないのか不安になってきました。 せっかくおもしろい仕掛けを作ったのに〜(ぉ ところで書き忘れてましたが、書き込みの書式でまだおかしなところが ありますね。<br>が3箇所入っているのと、pre の表示が pre pre となってます。
> ところで書き忘れてましたが、書き込みの書式でまだおかしなところが> ありますね。<br>が3箇所入っているのと、pre の表示が pre pre> となってます。原因が判明しました。 投稿するときのパラメータなんですが、例のマクロの出力そのままだと、縦 にずらっと並びます。それを適当にまとめて3行くらいにしたのですが、そ の際、各行の一番最後に指定したパラメータのところに<br>がくっつい てしまうことがわかりました。 もし、wforumの古いバージョンのスクリプトをお持ちでしたら比較するとわ かるのですが、wf_regi.cgiで受け取った投稿の改行を<br>タグに変換す るルーチンの位置が、以前のものとは異なっております。多分、この関係で、 以前はOKだったのが現在はNGとなってしまったのでしょう。 これは結構簡単に回避できて、パラメータの部分を全部くっつけて1つの行 にしてしまうとか、あるいは、各行末にダミーのパラメータ(&a=0とか)を くっつけるといった対応で何とかなります。 preの方は、パラメータを二重に指定していることがわかりました。 2つのpreの間、空白に見えるところは、実際にはヌルコードが入っていると 思います。これは、wf_initのフォームデコードのルーチンの中で、もしその パラメータが既に指定されていたら、ヌルコードを追加して、その後ろに次 の値を結合する、というロジックになっていたからでした。スクリプトの中 をdefinedというキーワードで検索すれば、すぐに該当箇所は見つかることで しょう。 と、いうことで、スパムではない書き込みを今日のテーマに打ち込んでみよ うかな。
> と、いうことで、スパムではない書き込みを今日のテーマに打ち込んでみよ> うかな。H岡さんへのコメントがレジ直書きなんですね。生ログを見てみましたが 問題なさそうです。 ところで今レジファイルを一つに纏める試みをしているんですが また多摩微のアンダーバー2つのレジに書き込んでもらえないで しょうか。一応準備は出来てます。 #ねこ認証は見てみたいけど導入はしないでしょう。(^^;
> ところで今レジファイルを一つに纏める試みをしているんですが> また多摩微のアンダーバー2つのレジに書き込んでもらえないで> しょうか。一応準備は出来てます。やってみました。 PADファイルがH岡さんへのものの使いまわしなので、タイトルが変になっ てしまいましたが、その他のパラメータは一応変更したつもりなので、多分大 丈夫だと思います。確認してみてください。
> やってみました。> PADファイルがH岡さんへのものの使いまわしなので、タイトルが変になっ> てしまいましたが、その他のパラメータは一応変更したつもりなので、多分大> 丈夫だと思います。確認してみてください。確認しました。結論から言うと、実験は成功しました。\(^^)/ やったぁ 修正漏れが一箇所あって直書きではない表示になってましたが、ちゃんと 別ログのほうに入ってたので間違いないと思います。 ということで、レジをアンダーバー1つのほうに纏めました。つまり元の ファイル名に戻したという事です。アンダーバー2つのほうは削除したので もうアクセスできません。 おっと、修正内容を書いておかないとわけわかですよね。今回は環境変数の リファラーを使って実現しました。リファラー文をif文の外に出して使いま わししました。 wf_init.cgiで $err3 = "."; # 他サイトからのアクセスを排除 local($ref) = $ENV{'HTTP_REFERER'}; if ($baseUrl) { # local($ref) = $ENV{'HTTP_REFERER'}; --- 中略 --- # スクリプトから飛んできていれば$err3を変更する if ($ref && $ref !~ /'wforum'/i) { $err3 = "。" ; } wf_regi.cgiで # ログファイル読み込み ### スパムならVIPルームへ if ( $err2 != 1 || $err3 eq "." ) { $logfile9 = $logfile2 ; } else { $logfile9 = $logfile ; } というぐあいです。$err3が文字になっているのはプレビューで確認するためで なんでもいいです。
う〜んと、REFERERを偽造しないと書き込めない、ということでしょうね。 しょうがない、バージョンアップするか。 ちなみに、既存のコマンドラインツールでは、「えっち」とか「SYSYA」なんかに 既に偽造(というか任意のREFERER指定)機能が搭載されているようですね。 参照: http://www.vector.co.jp/soft/win95/net/se261820.html http://www.vector.co.jp/soft/win95/net/se394679.html
> う〜んと、REFERERを偽造しないと書き込めない、ということでしょうね。> しょうがない、バージョンアップするか。ひぃ〜 そんなことまで出来るんですか。だんな、もう勘弁してくだせぇ。> ちなみに、既存のコマンドラインツールでは、「えっち」とか「SYSYA」なんかに> 既に偽造(というか任意のREFERER指定)機能が搭載されているようですね。> 参照:> http://www.vector.co.jp/soft/win95/net/se261820.html> http://www.vector.co.jp/soft/win95/net/se394679.htmlげげぇ〜 っと思ったらダウンロード用ツールなんですね。スパマー用は 闇のルートで流れているのでしょうかねぇ。 もし既存のツールが無いとしたらこれから超強力なツールが誕生するという ことになり、もうどんなスパム対策も効かなくなったりして。
> げげぇ〜 っと思ったらダウンロード用ツールなんですね。スパマー用は> 闇のルートで流れているのでしょうかねぇ。確かに、これらのツールを使っているスパマーはいないでしょうが。 でも、これらのツールを使ってスパムを投げることは可能なはずですよ。 ドキュメントに、POSTメソッドが使えると書いてあったはずです。 それが使えれば、理屈ではスパムが投げられるわけです。 ちなみに、私のHTTPOUTだって、元々の目的はダウンロード用のツールです。 REFERERを使ってセッション管理のまね事をするのなら、もうちょっとまじめ に、クッキーを使ったセッション管理でもいいかもしれません。wforumには 初めからクッキー対応機能が備わっていますから、ちょっとした改造でなん とかなるかもしれません。ただ、これとても完璧というわけではありません。 前にも書いたと思いますが、teacupの掲示板、クッキー必須なんですが、そ れでもスパムが書き込まれることがありますから、既に敵は技術開発が終わ っていると思った方がよいでしょう。 ちなみに、HTTPOUTにREFERER偽造機能を組み込むのに必要な改造量は、ソー スコードでざっと10行程度と見積もっています。クッキー対応も、うまく やればそのくらいでできなくもないでしょうが、その場合、クッキーの中身 をどのように指定するかという問題が出て、決して利用者に使いやすいもの とはならないように思えるので、そんな事なら最初からクッキーには対応し ない方がいいかな、とか思っております。 やはり、書き込み者にそれほど負担をかけないようにしつつ、機械仕掛けの 書込みはきちんと弾いて、なおかつスクリプトの開発量が少ないものといっ たら、毎回異なる認証コードを書き込み時に入力してもらうというぐらいの ものしか思いつきません。 噂によるとスパマー御用達のツールはGUIなツールらしいのですが、実際 に現物を見たことがあるわけではありませんから、それが正しいかどうかは 不明です。
> でも、これらのツールを使ってスパムを投げることは可能なはずですよ。> ドキュメントに、POSTメソッドが使えると書いてあったはずです。> それが使えれば、理屈ではスパムが投げられるわけです。> ちなみに、私のHTTPOUTだって、元々の目的はダウンロード用のツールです。う〜む、まさになんでもありですね。悪貨が良貨を駆逐するようにインター ネットという便利な通信技術の進歩がいっぽうでウイルスやスパムなどの悪意 の通信技術によって阻害されていくのは必然なのでしょうね。> REFERERを使ってセッション管理のまね事をするのなら、もうちょっとまじめ> に、クッキーを使ったセッション管理でもいいかもしれません。wforumには> 初めからクッキー対応機能が備わっていますから、ちょっとした改造でなん> とかなるかもしれません。ただ、これとても完璧というわけではありません。これはクッキーによるスパム対策ということですか。私も考えたんですが、 クッキーを弄るスキルがないのもので。> 前にも書いたと思いますが、teacupの掲示板、クッキー必須なんですが、そ> れでもスパムが書き込まれることがありますから、既に敵は技術開発が終わ> っていると思った方がよいでしょう。うーむ、クッキーを使ってても駄目とは、やはりテキのほうが一枚上手なん ですね。> やはり、書き込み者にそれほど負担をかけないようにしつつ、機械仕掛けの> 書込みはきちんと弾いて、なおかつスクリプトの開発量が少ないものといっ> たら、毎回異なる認証コードを書き込み時に入力してもらうというぐらいの> ものしか思いつきません。私は認証式は最後の手段だと思っています。そうなる前にプロバイダなどで アク禁などの対策が進んでくれることを期待しています。どうしても駄目なら ネコ認証でしょうか。(笑> 噂によるとスパマー御用達のツールはGUIなツールらしいのですが、実際> に現物を見たことがあるわけではありませんから、それが正しいかどうかは> 不明です。業者がコマンドラインツールを使いこなせるとは思えませんしね。(笑
> う〜む、まさになんでもありですね。悪貨が良貨を駆逐するようにインター> ネットという便利な通信技術の進歩がいっぽうでウイルスやスパムなどの悪意> の通信技術によって阻害されていくのは必然なのでしょうね。おおむね同意だけど微妙に見解が異なるというか。 包丁と同じで、もともとの目的はおいしい料理を作ることだけど、悪人は人を 殺すという目的に転用しているだけ、といった感じでしょうか。> 私は認証式は最後の手段だと思っています。そうなる前にプロバイダなどで> アク禁などの対策が進んでくれることを期待しています。どうしても駄目なら> ネコ認証でしょうか。(笑プロバイダはあてになりません。 だって、どこをアクセス禁止にするか、誰も連絡していないでしょ?
> おおむね同意だけど微妙に見解が異なるというか。> 包丁と同じで、もともとの目的はおいしい料理を作ることだけど、悪人は人を> 殺すという目的に転用しているだけ、といった感じでしょうか。喩としてはこちらのほうが上手いですね。いい喩が浮かばなくて。> プロバイダはあてになりません。> だって、どこをアクセス禁止にするか、誰も連絡していないでしょ?そうなんですが、スパムメール対策ではすでにアク禁のアドレスやIP を登録できますよね。これをサイトへのアク禁に拡大すればいいと思う んですがねぇ。
たとえ話といえば、某所でのこと。 そこはニフティお仕着せのhpmboardを使っています。 今まではスパム書き込みがなかったのですが、最近襲われるようになりました。 そこであったのが、お仕着せの掲示板の場合、全て同じ規格品の鍵で開く扉の ようなものだ、という話。今までスパム書き込みがなかったのは、単に、そこ に扉があることに気づかれていなかっただけなのでしょう。 でも、それって、WebForumをはじめとするKENTさん作の掲示板スクリプトにも 当てはまるような気がします。 この状況に対応するために、微妙にスクリプトを変えて、既存の合鍵では開か ないようにする、というのが私のところの板塀で採用している方法。合鍵では 開くけど、訪問者(投稿の中身)によっては進入させないためのチェーンを使 う、というのが、ここ野ざらし言でとられている方法でしょうか。あるいは、 スクリプトのファイル名を変えるというのは、いわば、既存の扉は壁に塗りつ ぶして別の扉を設ける、というようなものかも。REFERERを確認するというのは 事前に呼び鈴を鳴らすとかの手順を踏ませるということに該当するのかな。
一度狙われるとホント手が付けられないようですね。 KITI さんとこ(http://homepage2.nifty.com/kiti/)などは, ついに管理人 からのお知らせを偽装するスパムまで発生しています。 Si さんとこ(http://dmz.xrea.jp/dahlia/)は, つい最近立て続けにスパム 書込みがありました。 いずれもお仕着せの掲示板ですから,マスターキーでやり放題なんですね。
前回のたとえ話の続きで言うと、以前、konnoさんのところで、プレビューの デフォルトの値を変えるというのがありましたが、あれって、鍵を変えたわ けではなくて、錠前の取り付けを上下さかさまにしただけのようなもので、 鍵が刺さらないということでちょっとだけ戸惑うこともあるかもしれないけ ど、でも既存の鍵で開いてしまうわけで、だからほとんど排除機能としては 意味がなかったりします。> 一度狙われるとホント手が付けられないようですね。迷惑書き込みが一日にせいぜい2〜3件のうちは、それこそ、迷惑ではない 書き込みを1日当たり10件とか100件とかにして押し流してしまう、と いう手も使えるかもしれませんけどね。つまり、一切の排除措置を使わずに 実質的に無効化してしまうという方法。 でも、一番実現が困難な方法かも。
押し流し方式は到底無理ですから,地道な管理を心掛けているところです。 考えてみれば,某巨大掲示板などはスパムじゃないけど実質的に荒らしを押し 流しているくらいのスレッドが多い訳で,結局はやり加減の問題でしょうか。 世間一般の個人で管理しているやや寂しい掲示板が宣伝効果が大きそうで。 それはともかく。 konno 式スパム排除方式を導入してからちょうど1ヶ月を経過しましたが, この間でまだ2件しかスパムがありません。これほどの効果とは嬉しい想定外 で,管理が非常に楽になって助かります。ありがとう。> konnoさん
> そうなんですが、スパムメール対策ではすでにアク禁のアドレスやIP> を登録できますよね。これをサイトへのアク禁に拡大すればいいと思う> んですがねぇ。ちょっと誤解しているのかもしれないのですが、これって、利用者が自分で 登録するアドレスなんかのことでしょうか。だとしたら、それは掲示板スク リプト設置者が自分でアクセス規制のアドレスを登録するのと同じ事と思う のですが。 もし、プロバイダが提供する自動でのスパムメールブロック機能などのこと を言っているのだとしたら、それは、アドレスなどでの単純なブロックをし ているわけではない、ということを指摘しておきます。 これにはいろいろな方法があって、以前に聞いたものでは、登録したいくつ かのスパムのそれぞれと到着したメールがどのくらい似ているかを数学的に 計算して、それがどれかのスパムとある一定以上似ていればスパムと判定す る、なんていう方法が精度が高くて便利だとか。ベジエ理論とか言ったかな、 なんか小難しいものらしいのですが。図形の場合で言えば、例えばOCRの 文字読み取りで2とZや5とSの中間の瞹昧図形がそれぞれどちらとどれく らい似ているかということの判定に使うようなものだとか。これを文字列に 応用しているらしいのですが、よくわかりません。 私の使っているCATV屋が最近導入したスパムフィルターだと、本文やタ イトルで非標準的なエンコード方式を使っていたら何点、本文が英文のメー ルの場合、大文字の比率が何パーセント以上だったら何点、送信元アドレス に偽装の痕跡があれば何点、といった感じで、スパムでよく見られる特徴を 幾つか抽出して届いたメールのスコアを計算し、それが何点以上であればそ のメールはスパム、みたいな方式を採用しています。
> ちょっと誤解しているのかもしれないのですが、これって、利用者が自分で> 登録するアドレスなんかのことでしょうか。だとしたら、それは掲示板スク> リプト設置者が自分でアクセス規制のアドレスを登録するのと同じ事と思う> のですが。その通りですね。プロバイダに追加登録するのも自分のCGIに追加するのも 手間は変わらないかもしれません。ただ、プロバイダがアク禁すればその 中の全てのサイトに効かせることも可能なのではないかと。さらに、悪質 な業者はプロバイダ同士で連携して締め出すとかも出来るのではないかと 思った次第です。そうすれば余計なトラフィックが随分減らせるのではな いでしょうか。> もし、プロバイダが提供する自動でのスパムメールブロック機能などのこと> を言っているのだとしたら、それは、アドレスなどでの単純なブロックをし> ているわけではない、ということを指摘しておきます。これは私も聞いた事が有りますが、ウイルスチェック並みに煩雑な処理 になりますよね。ウイルスチェック・セキュリティチェックに加えて、 スパムチェックまでどんどん複雑になると、ますます通信が重くなるし スパムの自動判定は100%確実なものはないのが実情ですよね。 だから、むしろ単純にスパム業者とわかったID・IP・URLなどをどんどん 登録していったらどうかと思ったんですが、もしかして業者数が数万〜 数十万もあったらかえって処理に時間がかかりますね。う〜みゅ。
> その通りですね。プロバイダに追加登録するのも自分のCGIに追加するのも> 手間は変わらないかもしれません。ただ、プロバイダがアク禁すればその> 中の全てのサイトに効かせることも可能なのではないかと。さらに、悪質ひとつ間違うと、アクセスしてほしいお客さんまで締め出されかねないので、 この方式による運用は著しく難しいと思います。 だって、どこかのサイトがアクセス拒否にしたいと思ったところが、別のと ころではアクセスしてもらいたいところだったってこともあるだろうし、業 者がどこかのプロキシを経由してアクセスしてきた場合、そのプロキシを経 由している第三者にも影響が出る可能性もあるし。 以前、2ちゃんに、うちのプロバイダから悪質な連続書き込みがあったそう で、うちのプロバイダが数日間だか数時間だか、なんらかの制限を受けたら しいです。私はあそこにはほとんどアクセスしていないので影響がないので すが、うちの弟が打撃を受けたようで。これも、2ちゃんというひとつのサ イトだから許容されるようなもので、例えばニフティが全てのhpcgiに対して ある特定のサイトまたはドメインからのアクセスを拒否するようなことにな ったら非難の嵐になることは間違いないでしょう。> だから、むしろ単純にスパム業者とわかったID・IP・URLなどをどんどん> 登録していったらどうかと思ったんですが、もしかして業者数が数万〜> 数十万もあったらかえって処理に時間がかかりますね。う〜みゅ。ひとつの業者がころころとIPアドレスやURLを変えていくんですよ。 そして、場合によっては、以前そういう業者が使っていたアドレスを、全く 関係ない善意の第三者が使うことになる場合もあって、そういう場合、それ がプロバイダのほうで登録されてしまっていると、その人はアクセスできな くなるわけで、もしkonnoさんがそういうIPアドレスを割り振られてしまっ た場合に容認できますか? 私はとてもじゃないけど容認できません。 でも、実際、SPAMメールの場合、似たようなことはあるのですよ。 セキュリティの甘い、第三者のメールも転送できるような設定になっている メールサーバの一覧というのがその筋で公開されていて、一部のプロバイダ ではそれらのサーバからのメールを拒絶するようになっています。ところが、 ずっと大昔にそのリストに登録されたIPアドレスが自分に割り当てられて、 メールサーバを立てるまでは不都合がなかったけれど、自前でメールサーバ を立てたら一部の相手にメールを出せなくて発覚した、なんていう話を聞い たことがあります。 このリストを公開しているのは裏筋ではなく表のセキュリティ関係のサイト なので、頼めばリストから削除してくれるのでいいのですが、相手サーバか ら帰ってきた受付拒絶メールを見てそのように判断するのはそれなりに経験 を積まないとちょっと難しい。
> 以前、2ちゃんに、うちのプロバイダから悪質な連続書き込みがあったそう> で、うちのプロバイダが数日間だか数時間だか、なんらかの制限を受けたら> しいです。私はあそこにはほとんどアクセスしていないので影響がないので> すが、うちの弟が打撃を受けたようで。これも、2ちゃんというひとつのサ> イトだから許容されるようなもので、例えばニフティが全てのhpcgiに対して> ある特定のサイトまたはドメインからのアクセスを拒否するようなことにな> ったら非難の嵐になることは間違いないでしょう。うーん、私も2ちゃんは見ているので同じような経験があります。 たしかにドメインをアク禁にしたら大変ですね。> そして、場合によっては、以前そういう業者が使っていたアドレスを、全く> 関係ない善意の第三者が使うことになる場合もあって、そういう場合、それ> がプロバイダのほうで登録されてしまっていると、その人はアクセスできな> くなるわけで、もしkonnoさんがそういうIPアドレスを割り振られてしまっ> た場合に容認できますか?こういう例があるとは知りませんでした。これではへたにアク禁など できないですねぇ。> ずっと大昔にそのリストに登録されたIPアドレスが自分に割り当てられて、> メールサーバを立てるまでは不都合がなかったけれど、自前でメールサーバ> を立てたら一部の相手にメールを出せなくて発覚した、なんていう話を聞い> たことがあります。そういえばメールのやり取りが出来ない場合がたまに有ります。メールの アク禁の影響だと思いますが、ホットメールとかヤフーメールとかをアク 禁にしている人も結構いるようですし、うちは ne.jp でなく、.com に しているので、これで撥ねられる場合もあるようです。それ以外にこんな 事例まであったのではどんどん使いづらくなってきますね。 #URLのテスト(^^; http://homepage3.nifty.com/tamaneko/
自己レス。> う〜んと、REFERERを偽造しないと書き込めない、ということでしょうね。> しょうがない、バージョンアップするか。大体完成。 -refオプション追加に伴うソースコードの追加は4行。 ドキュメントの追加の方が大きくて10行ぐらいだったりする。 さすがにこれだけではなんなので、別機能の付加も行うけど。 以前、できないと思ってあきらめていたプロキシ経由接続機能だけど、実は 簡単に実装できることがわかったもので。これができれば、会社の社内ネッ トワークからでも外部にアクセスできるようになって便利便利。当然、外部 の串経由も可能になるので、なんかますますスパム発射用機能充実って感じ。 あと、トラックバック発射機能はどうしようかなぁ。 技術開発は済んでいるし、簡単に搭載可能だけど。 しばらく使い込んでバグ出しをするから、新バージョンは来月早々くらいに リリース予定。えへへ。
> やはり別環境にするべきかも。init.cgi 中に他のすべてのファイルが定義されていますから, どこがどう 呼び出されるかよくわからないところがありますよね。実際,このあたりが心 配であまり弄れないんですよね,ファイル名の変更も含めて。 それはともかく,konno さん式対策を施してから,現在までスパムコメント はまだひとつもありません。なんか,怖いくらい効果絶大ですね。(^o^)
流石に,あらゆるスパムを排除できるというわけにもいかなくて,参照先が index.html で発言中の URI が他のページというやつに2連続でやられました。 しかも,これらは wf_regi.cgi に直接投げているらしく, どの発言へのコメ ントでもないのにスレッド先頭発言番号を持っているというもので,関係の無 いスレッドを上げてしまうという邪悪なことをやってくれるため,即座にアク セス禁止にしてやりました。(IPアドレス:72.9.100.34) 参照先サイトの中にある URI を本文で示す時は,index.html を参照先に付 けておけばいいんだな,…と思っていたのですが,テキもそのことに気付いた のかそれとも偶然だったのか,先手で逆手を取られた気分です。(^_^;
みなさん、お久しぶりです。> 実運用は変更したファイルでやってるわけだし、うちの場合wf_log.cgiも> 変更しているので、変更前のwf_regi.cgiを元のまま置いておけばここに> アクセスするのはスパムであり、そのログはやはり変更前のwf_log.cgiに> 書き込まれてテキから見ればエラーにならず書き込み成功したように見え> るというわけです。これ、意図せず同じようなことが私のところでありましたよ。 今日記を書くのに使っている rNote というシステムを使う前は手書き html で やってて、いわゆるツッコミ機能を実装するのに、くっつき bbs というものを 使っていました。今の rNote に移行してからも cgi 自体は撤去せずに放置して いたのですが、知らないうちにかなりのスパムをこれが食らっていました。 半月ほど前に気がついてから撤去したんですが、この cgi がなくなったことで 404 の数がもうすぐ600に迫ろうかという勢いです。:p) 表に出ないので気がつかなかったんですが、おそらく一月あたり、1000件くらい はスパムられていたのかも。
N.YAMA さん、こんにちは。 いつも HTML.SHD でお世話になっています。m(__)m そういえば最近は あまり起動してないなぁ。簡単なタグしか使わないから。(^^;> 表に出ないので気がつかなかったんですが、おそらく一月あたり、1000件くらい> はスパムられていたのかも。ひぇ〜、すごいですねぇ。集中攻撃型なんでしょうか。nifty内ではせいぜい 月数十件程度なので、大部分をniftyが撥ねてくれているんでしょうかね。
> いつも HTML.SHD でお世話になっています。m(__)m そういえば最近は> あまり起動してないなぁ。うは、html.shd なんてものもありましたね。実は現在 Vz をメインのエディタ としては使っていないので、その存在すら忘れていました。(ぉ 久々に開いてみましたが、今となっては書き直したい部分が結構ありますね。内 容的に、html 4.01 transional なところは時代を感じます。手元にあったもの のタイムスタンプをみたら、1998年9月15日になっていました。> 簡単なタグしか使わないから。(^^;私もそうですよ。見出しと段落とリストくらいなもんです。今だったら、 html.shd よりは、css.shd とかのほうが需要があるというか、役に立ちそうな 気がします。まぁ、いずれにしろ一度大体覚えたら見ないですけどね。:p)
> 久々に開いてみましたが、今となっては書き直したい部分が結構ありますね。HTM_MAKE.def も v1.00が 1998年11月ですから,やはり過渡期型の内容で, 見出しレベルあたりも大→→小となっているのを見ると,あのにゃまさんにも こういう時代があったのだなぁと感慨を深くするわたくしでありました。 でも「忘れたい過去」なんて青いことを言わないところが,やっぱり凄い高 みに到達しようとしてるのだなぁと改めて思う訳でありまして,自分なんかも 97年頃マークアップした職場のマニュアルなんかを今見ると,「うはっ」なん てところが多すぎて,けっこう赤面したりしてますもんね。(^_^;
表から見えず,管理者すら容易に気付かないというところが,なかなかいい ですね。 :p) 1000件/月という数字にコメントスパムとかトラックバックス パムのすさまじさをみる訳ですが,こんなものがトラフィックを膨大にしてい るかと思うと腹が立ってきます。
先ほど、またアクセス解析の 404 ページのところを見てみたところ、さすがに アクセスは止まっているようでした。敵も一応爆撃先リストとかメンテしている ようですね。
どこにコメントをつけようか迷ったのですが、とりあえずここに。> このwf_regi.cgiへの直接書き込みってほんとにあるのかとか、ファイル名konnoさんのところ、またやられていましたが、今回は明らかに直接書き込み でしょう。なぜって、URL欄のところ、複数のURLが羅列されていまし たが、URLとURLの間が、単純な空白文字ではなかったような感じです。 実は本当は空白文字だったのなら、私が勘違いなので申し訳ないのですが。 で、空白文字ではなかったとすると、多分、書込みツールの方では、複数の URLが改行で区切られて縦にずらっと並んでいたのではないかと思います。 で、受け取ったスクリプトがむりやりそれを#13か#10に解釈した結果があの ようなのものになったのではないだろうか、と思うわけです。 ま、1回や2回やられたからといってうろたえる必要はないでしょうが、こ れからも3回、5回とやられるようなら、前にも提案しましたが、本文に日 本語文字が1文字もなければ、とか、本文にURLが4つ以上含まれていれ ば、なんてルーチンを実装した方がいいかもしれません。
> konnoさんのところ、またやられていましたが、今回は明らかに直接書き込み> でしょう。なぜって、URL欄のところ、複数のURLが羅列されていまし> たが、URLとURLの間が、単純な空白文字ではなかったような感じです。実はほぼ同じ時間帯(9:33)に野ざらしもやられてます。 #1033の位置に書 き込まれたのですが,速攻(15分以内)で削除しました。URL の間はログ上で はヌルです。投稿者の方も同じ yasru というのがヌルで区切られて 10個並ん でいました。URL の方は 13個並んでいました。IP は 72.232.68.50 です。 本文に zwiki,org が含まれる発言は書込み禁止としました。 今日は遅番だ ったので,たまたま対処できたようなものですが,普段なら長時間晒されてい たかもしれません。 日本語が含まれていないケースというのは,コードの書込みなどの場合が考 えられるので,なかなかそこまで踏み込めません。それほどあることではない と思いますので,しばらく様子を見させてください。
> き込まれたのですが,速攻(15分以内)で削除しました。URL の間はログ上で> はヌルです。投稿者の方も同じ yasru というのがヌルで区切られて 10個並んそうですか、ヌルで区切られていたのですか。 それにしても、普通に掲示板に書き込んだのではありえませんから、やはり 直接狙われたということにほぼ間違いはなさそうですね。> 日本語が含まれていないケースというのは,コードの書込みなどの場合が考コードったって、通常はコメントとかメッセージに使われる文字列定数など で日本語が使われることも多いでしょうし、地の文というか、そのコードの 解説が同時に行われるだろうから、あまり気にしなくてもいいと思うんです けどね。
> 直接狙われたということにほぼ間違いはなさそうですね。直書き対策を施している「今日のテーマ」に書き込まれたのがちょっと不思 議なのですが,テキはそれを上回るテクニックで書きに来ているということに なるのでしょうか。いや,同じ様に書き込まれているので,自動巡回ソフトの ようなものか,手順再現ソフトのようなものでしょうか。> コードったって、通常はコメントとかメッセージに使われる文字列定数など> で日本語が使われることも多いでしょうし、地の文というか、そのコードの> 解説が同時に行われるだろうから、あまり気にしなくてもいいと思うんです> けどね。まぁ,普通に考えればそうなのですが,金野さん方式のスパム対策を施して 以降は,まだスパムコメントは2回しかないということもあって,あまり制限 をしたくないとか,今回のように個別処理が可能とか,たまにあるとバックア ップを忘れなくていいかもとか,Web Forum の新版への移行が先とか,色々ご ざいまして。(^_^; 板塀みたいにスパム皆無の掲示板を運営してらっしゃると,ごくたまにやら れるのも許容できないという意識になるのかもしれませんが,野ざらしにとっ ては金野案の効果があまりにも絶大なので,あまり苦でもないんですよ。(笑) 利用してくださる方にとってはひどく目障りなのは確かで,これが一番問題 なわけですが。
前にも書きましたが、1回や2回やられたからといっておたおたするのは、 それはそれで過剰反応だと思います。> 直書き対策を施している「今日のテーマ」に書き込まれたのがちょっと不思> 議なのですが,テキはそれを上回るテクニックで書きに来ているということに> なるのでしょうか。いや,同じ様に書き込まれているので,自動巡回ソフトの> ようなものか,手順再現ソフトのようなものでしょうか。直書き対策ったって、やっているのはリファラのチェックぐらいだったよう な記憶があります。であれば、こんなものを偽るくらい簡単というか、私の 作ったソフトにすら機能が具備されているので、それほど大した物ではない と言い切ってしまいましょう。いずれにしろ、自動巡回ソフトのようなもの でしょう。手順再現ソフトだとしたら、どうやってヌルコードを入れたのか、 という疑問点が解決されずに残ってしまいますから。> 板塀みたいにスパム皆無の掲示板を運営してらっしゃると,ごくたまにやら> れるのも許容できないという意識になるのかもしれませんが,野ざらしにとっ> ては金野案の効果があまりにも絶大なので,あまり苦でもないんですよ。(笑)スパム皆無というのは、逆に言うと、閑古鳥がかしましい、という意味でも あって、果たしてそれがいいことなのかどうか、というのは十分検討に値す る難問ではないかと。 ただ、私があちこちの掲示板を見ている範囲では、実際に数えたわけではな くて単なる印象なんですが、 1.URL欄と本文に同一文字列あり 2.日本語非含有 3.本文にURL4つ以上 と分類した場合、1だけでは7割程度しか引っかからないと思っているわけ です。2だけ、あるいは3だけ、という方式でも6割程度。ただ、2と3の 共通集合に含まれるものはそれぞれの9割かそれ以上あるように思えるので、 対策として2と3の併用というのを行っても、やはり7割か、せいぜい8割 程度しか切れない、と思います。が、1と2、あるいは1と3、という対策 を取れば、たぶん9割以上、もしかしたら98%とかの高率で、不要なものを切 り捨てる事ができるのではないかと見積もっているのですよ。 どこか、しばらくメンテされていないような掲示板でも見に行って、実際に 数を数えてみれば、どういった方法でどのくらいの効果があるのかという事 を割と正確に見積もる事ができると思います。
IPと特定サイトの設定をすり抜けてやられました。 この発言時刻から10時間後と13時間後(^^;に重ねてやられてしまいました。 (記事を修正できるってのは,いいような悪いような。) とりあえず,急場しのぎに以下のを入れときましたが,自分で実験できないので また来ないとわからない。…ってか,正解なら来てもわからない。(^^; # 名前にヌルを含むなら if ($in{'name'} =~ /^[A-Za-z]+\0.+$/) { $err2 = 1; }
> # 名前にヌルを含むなら本当に名前にヌルを含んで書き込まれているのか、という疑問があります。 なぜなら、wf_init.cgiで定義されているdecode関数の中に $in{$key} .= "\0" if (defined($in{$key})); $in{$key} .= $val; という記述があると思いますが、つまり、敵が例えば name=hogehoge name=hogehoge name=hogehoge というように、複数回同じ変数名を記述して投稿してくると、それらの区切 りがヌルとなって、あたかもヌルを含んだ1つの投稿に見える、ということ になっているからです。 もし今回の対策で効果がなければ、次の手はどうなるのかな。
今後同様の書き込みがあれば、としきさんの推測の正しいことが証明されま すので、しばらく様子を見てみましょう。ログに記録される前の段階なので、 ヌルの扱いがどのようになっているか詳しく見ていませんが、うまくいったら 拍手喝采ということで。> もし今回の対策で効果がなければ、次の手はどうなるのかな。そうなったら、としき案の、本文に日本語を含まないというところになるで しょうね。 実際、今回の対応は急場しのぎと考えていますので、恒久的なものではあり ません。ただ効果があるようであれば、このままでもいいかなと考えています。 単に負荷の少ないものから試していますが、まぁ、頻繁ではないと思うので、 本文総嘗めでもほとんど問題はないでしょう。 別案の方は URL 数のカウント が面倒なので、これは採用がちょいと難しそうですけど。
そういえば、あのヌルチェックルーチン、どの位置に仕込みました? decodeが終わったあとであれば、私が指摘したような投稿のされ方をしてい ても、結局ヌルが含まれている訳ですから、十分効果があるものと思います。 decodeが終わる前だと、効果は怪しいと思っているのですが。
> そういえば、あのヌルチェックルーチン、どの位置に仕込みました?入力チェック関数の中です。位置としては順当だと思うのですが…。> decodeが終わる前だと、効果は怪しいと思っているのですが。うーむ,そうですか。 わたしは perl の(perl に限らないが)オーバーレイのような構成にとて も随いていけない人間でして,どの関数がどこから呼ばれているかあまり意識 したことはありませんでした。 ただ,decode 関数(サブルーチンと言うべき なのですか?)って wforum.cgi の変数定義の次にもう呼んでいますよね。 どうもよくわからないな。(^_^;
私も、perlのsubがサブルーチンなのか関数なのかもよくわかっていない人 間ですから、問題ありません。 #意味不明> 入力チェック関数の中です。位置としては順当だと思うのですが…。なら、大丈夫なのではないでしょうか。とりあえず一安心というところで。 もしダメなら、その時にまた考えるという事で。> わたしは perl の(perl に限らないが)オーバーレイのような構成にとて> も随いていけない人間でして,どの関数がどこから呼ばれているかあまり意識私の場合、WebForumに限って言えば、どこがオーバーレイになっているかも よくわからりません。オーバーレイという言葉は知っていますし、昔、メモ リの足りないDOSのころには.OVLなんて拡張子のファイルがあったりした ことも覚えていますが、決して正しく理解しているわけではないのです。 私の理解しているperlの挙動では、 ・requireではそのファイルをそのままその部分にペーストした時と同じよう に動く ・プログラムは先頭から順に動いていく。ただし、subがあると、そこは定義 部としてスキップする ということだと思っております。 requireについては、アセンブラソースとかC言語のincludeとほぼ同じだと思 いますので、大丈夫でしょう。 subについては、要はメインルーチンのど真ん中にサブルーチンの定義部があ っても、そこだけきちんとスキップしてくれるという事で、暗黙のジャンプ 文があると思えばいいのではないでしょうか。 と、知ったかぶりをしてみましたが、でも、私の理解も間違っている可能性 も高いので、あまり信用しないでください。
> IPと特定サイトの設定をすり抜けてやられました。IP は 72.232.68.* で設定したんでしょうか。うちは 72.232.* で入れ ました。どうせ海外のサーバーだろうと思ったからですが、もしかして まずいかな。(^^;; その後は来てませんが。> # 名前にヌルを含むなら> if ($in{'name'} =~ /^[A-Za-z]+\0.+$/) { $err2 = 1; }う〜む、名前にヌルを含むのはかなり特殊な事例の気がしますね。 マイノリティサポート? スパム・クルーズ なんちゃって (^^;
> う〜む、名前にヌルを含むのはかなり特殊な事例の気がしますね。
> 26日 09:33 - 72.232.68.50
> 30日 12:19 - 202.159.212.165
> 30日 22:50 - 202.159.212.165
> 31日 01:?? - ?? 記録忘れた
> 手口は同じようですが,業者は異なるのかもしれません。
> サポートじゃないって。(^^;
> 前にヌルを含む書き込みは,善意の投稿者には決してできないことなので,悪
> 意の投稿者のみへの対策ということで意義があるのかもしれないと思います。
> 日本語なしと複数リンク先のどちらか一方で十分な対策(むしろ過剰な対策という気持ちが残って悩みます)になりますので、優先的に導入するのはどちらかという選択になりますね。
> #日本語の無いコメント及び大量URLの羅列を拒否
> $code2 = &jcode'getcode(*c);
> まぁ,しかし,せっかくだから自前でやろうかな。(^^ゞ
> 逆に、もう残された手段も少ない、という考え方もあるかも。
> そういえば、WebForumの新バージョン、Ver4.8というのがリリースされた
> キリ番おめでとう(微笑)
> 認証方式は、極力とりたくない手段です。
> 野ざらし用に手を加えたものとの差分を取ろうとしていたところでした。
> 変更を上手に追随させる何かうまい手がないかなぁ。
> ちなみに、Ver4.52以降、強制改行のルーチンがどうもうまくないです。
> 当面はこのまま様子を見て,たまに歓迎しない書込みがあれば即刻削除あるいは内容を差し替えるという対応を行ってゆくという方向です。
> 強制改行のルーチンは外部の fold.pl ですよね。v4.8も v4.52も fold.pl の
> タイムスタンプは同じなので,呼び出す側(パラメタとか)に問題がありそうですね。
> 極めて穏当な方向ですね。
> 例えばtextareaの桁数を250とかにしてみようかな。
> これはなかなかいいアイディアですね。きっと皆が思惑通り改行を入れてくれるようになるのではないでしょうか。
> これを記念して,見栄えを少し明るくしてみました。(笑)
> 新しい Web Forum はデフォルトで「日本語認証」と「URL 個数認証」が導入されています。
> ま、まぶしい!!(笑) いや、すがすがしい色合いですね。(^_^)
> これはなかなかいいアイディアですね。きっと皆が思惑通り改行を入れてくれるようになるのではないでしょうか。
> これを記念して,見栄えを少し明るくしてみました。(笑)
> 新しい Web Forum はデフォルトで「日本語認証」と「URL 個数認証」が導入
> なんか、野ざらしというイメージに合わないような気もしますが。
> かなり昔にも、同じようなことを書いたような記憶があって。
> 調べてみたら、konnoさんの掲示板の#854(過去ログ移行済)でした。
ありゃ、どうも間違ったことを書いてしまって申し訳ない。 なんでこんな間違いを犯したんだろう。(?_?) 検索でたどりついたのは覚えているのですけど、現在ログを検索したのを、 表示形式が通常の発言表示と異なっているところから、てっきり過去ログを 検索中だと思い込んでいたのかもしれない。というか、そうとしか思えない。 どうも大変ご迷惑をおかけしました。
> 表示形式が通常の発言表示と異なっているところから、てっきり過去ログを
> 検索中だと思い込んでいたのかもしれない。というか、そうとしか思えない。
> ウチのところは書き込もうとしている痕跡は通常、月に1〜2回あるんですが、
> 書き込みに成功しているのは半年に1回程度ですね。といいつつ、今月はまだ
> 1回も妖しい痕跡はなし。
> となると、今回の書込みを防止するには、お名前やタイトルの欄を見て、そ
> こが妙な形式であった場合には書込みを規制する、という方法しか思いつき
> ません。
> 日本語が含まれず、かつ、URLが複数ある場合に規制すればいいのでは。
入力チェックのところでこんなのは効かないでしょうか。 # 名前かタイトルに改行を含むなら if ($in{'name'} =~ /^.*\n.*$/ || $in{'sub'} =~ /^.*\n.*$/) { &error("不正な名前あるいは不正なタイトルです"); } 攻撃パターンを解析するのは一種の謎解きですね。 サーバーのアクセスログなんか見られれば,わたしももっと楽しいかも。
> 入力チェックのところでこんなのは効かないでしょうか。効きそうですね。 そのうちに、これも採用させていただきましょう。 ただ、できれば、\rでのチェックも加えたいところです。> サーバーのアクセスログなんか見られれば,わたしももっと楽しいかも。いわゆるレンタルサーバというやつだと、ログを見る事ができる業者は多い と思います。この界隈だと、Siさんあたりがレンタルサーバではありません でしたっけ。にゃまさんのところは、レンタルというにはかなり違うと思う けど。 あと、infoseekかどっかのブログサービスで、追加料金を払うとログが見ら れるというサービスがあったように聞いたことがあるので、もしかしたらニ フティでも同様なサービスがあるかもしれません。
> とりあえず、名前欄に「http://」の文字列が含まれている場合を規制しまし
> た。これで、今回8連発で書き込まれたうちの7発は抑止できます。
> 続いて、wforum.cgiのある特定発言を読み込み。これがリファラ対策かな。
> そしてそれに対するコメント書き込み実施。
> とりあえず、名前欄に「http://」の文字列が含まれている場合を規制しまし今朝方、また2発書き込まれてしまいました。 まるで、ここの書き込みを読んでいるかのように、名前欄だけURLの記載が ないというものでした。 アクセスログを確認したところ、今回の書き込みアクセスはこの2発だけ。 つまり、前回のように大量にアクセスがあったうちの2つだけ書き込まれたと いうわけではないのです。ほんと、ここを読まれているみたいで気味が悪い。 しかたないので、タイトル欄も「http://」の文字列があれば規制することに しました。 あと、前回、ロシア方面からのアクセスと書きましたが、どうも見間違えた ようで、本当はフランス領レユニオン(.ru)からのアクセスでした。 このいかがわしい書き込みを見られてしまっためざらさんに、とりあえず報告 ということで。
> このいかがわしい書き込みを見られてしまっためざらさんに、とりあえず報告
> ということで。
> あと、前回、ロシア方面からのアクセスと書きましたが、どうも見間違えた
> ようで、本当はフランス領レユニオン(.ru)からのアクセスでした。
げ、速い。> > あと、前回、ロシア方面からのアクセスと書きましたが、どうも見間違えた> > ようで、本当はフランス領レユニオン(.ru)からのアクセスでした。申し訳ない、.ruはロシアでいいのですよね。 レユニオンは.reでした。 もしかしたら.ro(ルーマニア)だったかもしれません。 自宅に帰って、もう一度確認します。
> .ruはロシアでいいのですよね。
> 申し訳ない、.ruはロシアでいいのですよね。> レユニオンは.reでした。> もしかしたら.ro(ルーマニア)だったかもしれません。> 自宅に帰って、もう一度確認します。確認しました。ロシアに間違いありませんでした。 ちなみに、自宅からtracerouteをかけたら、ロサンゼルスとロンドンを経由 して、アタック元のIPアドレスにたどりつきました。
> 途中にタイムアウトしたところが 12箇所ほどありましたがそれだと、ゴールにたどりつくまでに結構時間がかかったことでしょう。 そういう時には、DNS問い合わせをしないというオプションがあったかと 思いますので、それも合わせて指定してみて下さい。微々たるものかもしれ ませんが、少しは速くなるはずです。 もしかしたら、これはpingコマンドの方かもしれません。pingコマンドも、 オプションを指定するとルートトレースできたはずです。もっとも、この辺 はOSごとにオプションに差がある可能性があるので、ヘルプメッセージを 参照してください。> そういうルートって,どう決められるものなんでしょう。それぞれのノード(多くの場合はルータ)の設定です。 宛先に応じた固定設定を使っている場合が多いかな。 パソコンでも、ネットワーク設定でデフォルトゲートウェイって項目があり ますよね。これも固定設定。DHCPで自動設定の場合が多いかもしれませ んが、でも、設定値が途中で変わることはないはずです。 ただ、普通のパソコンと違い、固定設定といいつつも、回線が途絶したとか 相手ノードダウンなどで次のノードの応答がなくなった時には、自動で迂回 する機能(別のノードを固定宛先とする機能)は具備しているのが普通です。 これが例の、核戦争があっても通信が途絶しないようにと開発された機能。 この目的ための一番単純なプロトコルであるRIPというものは、家庭用の ルータでも多くの機種で備わっています。使うことはあまりないでしょうが。
> これが例の、核戦争があっても通信が途絶しないようにと開発された機能。
> しかたないので、タイトル欄も「http://」の文字列があれば規制することに
> しました。
> そのURLはなんかアダルト系でもなければ薬屋系でもないような感じ。
> 81.177.*.*ってところですが、スクリプトではなくサーバ側でアクセス停止
> 実際に行ってみないと確認できませんからね。
> URL だけで判断するのは難しい場合があるでしょうけど,
> 宣伝であることは変わりがないので,サイトへのアクセスを促すという目的のもとにやっているわけですよね。
> 逆説が過ぎますか?
> ところで,ポート80を遮蔽することで問題が生じる可能性というものはないのでしょうか。
先日、ココログ上の某所なんですが、スパム排除のためにすごいワザを使っ ているところを見つけてしまいました。書き込みボタンを押した後、パスワ ードの入力を要求してくるのです。その時、同時にパスワードも表示するの ですが、そこに表示されるのは何と、グラフィックなんですね。 これなら確かに、機械的な投稿によるスパム書込みも排除できますが、同時 に目の不自由な人の書込み機会も奪ってしまう訳で、いくらなんでもそこま でするのはどうかなぁ、と思ってしまったわけです。 ただ、この手のパスワード方式というのは、やりようによっては非常に効果 が高いと思います。もちろん、テキストのみでも可能なわけですし。ただ、 いくらなんでも「パスワードは...です」なんていう文字列を同時に表示 したら間抜けなわけで。う〜ん、ランダムな10文字くらいの長さの文字列 を表示して、「右からn番めの文字を入力してください」くらいがいいかな。 毎回、何番目かと文字列の内容をランダムに表示するようにすれば、そこそ こ効果はありそう。ただ、ここを含めた一般的な掲示板としては、かなり過 剰装備だと思う。無意味だとは思わないけど。
ありますね,そういうの。どこだったか忘れてしまったのですが,オンライ ンサービスの申込みをする時に2度ほど,表示された画像の文字を入力させる というのがありました。それが,普通のフォントを画像にしたものではなく, わざと歪ませた画像でした。これが「解読」するのが結構大変で,色の判別に 苦労する色覚特性を持つ人は果たして見えるのだろうかと心配したものです。 手軽にやるなら,パスワードを XBM で生成するとか。 既存のフォントにな いようなデザインで出力するようにすれば,かなり効果が高いのではないでし ょうか。ま,うちは読み上げソフトを使っている方を排除する理由はないので 導入はしませんが。 パスワードを日本語読みとか漢数字(壱弐参とか)で表示してやれば,バリ アフリーで日本人だけ解るというものにできそうですね。こっちの方が現実的 なんじゃないかという気がします。
こんばんわ。 私の友人は、ねこ認証というのをやっていますね。猫を選んでくださいといって、 複数の画像が並べてあるというようなものです。で、画像は種類も含めて毎回ラ ンダムに表示されるようになっています。もちろん、猫は1匹しかいないのです が。 今見てみたら、画像の代替テキストは入っていなかったので、これも音声読み上 げでは使えないようですが。 別の友人のだと、1+2 位の簡単な計算をさせるというのもあります。もちろん数 字はアクセスごとに変わります。 ねこ認証のほうは、一見認証ぽくなくて割に好評のようですよ。
> 私の友人は、ねこ認証というのをやっていますね。ねこ屋敷のあるじだったら導入したがるかも;-p
文字ベース画像の認証と比較しての利点に「ねこ」というのがあって,これ は思いっきり笑えました。世の中,猫好きがとても多いようで。 確かに alt="ねこ" を入れるとロボットに読み取られるということも心配な のでしょうけれど,その代わりに鳴声認証の開発が待たれるなんていうのも, なかなか涙ぐましい感じが伝わってきます。 alt="にゃんにゃん" なんてのは, アクセシビリティの観点からは反則なの でしょうか。代替文字列も「にゃーご」「ふにゃー」「ごろごろ」なんて具合 にいくつか用意しておいて,ランダムに出力するとか。少なくとも他の動物よ りはバリエーションが楽しめるのかも。(楽しむのか?)
こんにちわ 結局私のところもなんか対策しないとイカンということで、何のひねりも ないというか、考えるのも面倒だったので超手抜きのほげほげ認証なるも のを装備してみました。 どういうものかというと、「ほげほげ」という文字列を書かないと投稿で きないというようなもので、とりあえず日本語を理解して日本語が入力で きる人じゃないと(人じゃなくてもいいですが)、投稿できないはずです。 もっとも、「ほげほげ」決め打ちなんでじきに解析されそうな気がします けどね。まぁそのときはまた考えるということで。
> どういうものかというと、「ほげほげ」という文字列を書かないと投稿で> きないというようなもので、とりあえず日本語を理解して日本語が入力で> きる人じゃないと(人じゃなくてもいいですが)、投稿できないはずです。これ,ダウンロードサイトで海外からの直リンクを弾くためによく使われて いる手ですね。「『いちきゅーはちさんろくぜろ』を数字で入力してください」 みたいな。(笑) こういうのは確かに日本人でないと認証は無理。