• 締切済み

投稿記事にNGワードを見つけたら投稿拒否するCGI

投稿時に入力するハンドル名、メールアドレス、URL、タイトル、投稿記事等から、NGワードを検索し、該当したら投稿を拒否する機能を持ったフリーの掲示板CGIスクリプトは無いでしょうか? NGワードを登録し、それに該当する物が記事にあったら表示しない、といった掲示板は見た事はあるのですが、それをさらに発展させたような感じですかねぇ・・・ 最近IPアドレスによる投稿拒否を行っても2,3日後にはプロキシ変えて投稿されるのを繰り返されて迷惑してます。 #ちなみに排除したいワードは「URL」でワンクリ詐欺サイトです・・・ どなたか知ってる方いらっしゃいましたらよろしくお願いいたします。 なお現在KENT WEBさんのyybbsを使用してます。 自分に改造する技術があれば・・・ 技術的にはIPアドレスで弾いてるロジックはあるので、そこにNGワード検索でONなら飛ばすみたいな感じで行けるかなぁとか思ってるんですが・・・

  • CGI
  • 回答数4
  • ありがとう数4

みんなの回答

  • Koji001
  • ベストアンサー率0% (0/0)
回答No.4

私もyybbsを使用しているのですが、 最近はURLを羅列しただけの不正書き込みが目立つため、 「URLが三つ以上書き込まれたら拒否する」 というロジックを追加しました。 ご参照ください。 (「URLの自動リンク」がオンの場合です) 挿入場所: sub auto_link { という記述がある行のすぐ下 挿入ソース(4行): my $num = ($_[0] =~ s/http/http/g); if($num > 2){ &error("書き込みは拒否されました"); } -------------- 「http」という文字が3回以上書き込まれたら拒否のメッセージを表示する、という単純なものです。 この改造以降、今のところ不正書き込みは激減しています。 ご参考までに

  • lirmis
  • ベストアンサー率0% (0/0)
回答No.3

KENT WEBさんの「Web Forum」を使用している者です。 yocchan55さんと全く同じようなことで悩んでいたので、こちらのスレッドは大変役に立ちました。 phinexeさんの方法でうまくいきました。 メールアドレスやURL、ハンドル名などにも対応できて良いですね! どうもありがとうございました。 同じことで困って参考にする方がいらっしゃるかもしれないので、わたしがやってうまくいった方法を補足しておきます。 「Web Forum」の場合、いじるのはwf_init.cgiです。 #----------------# # 入力チェック # #----------------# の真上に #----------------# # NGワード設定 # #----------------# sub ngword { open(FH,"./ng.cgi"); @Fdata = <FH>; close(FH); $rtrn = 0; foreach $frch ( @Fdata ){ $frch =~ s/\n//g; if ( $_[0] =~ /$frch/ ) { $rtrn = 1; } } return $rtrn; } を追加。 #----------------# # 入力チェック # #----------------# の下にある # 題名入力 if ($in{'sub'} eq "") { &error("「題名」の入力モレです"); } の下に # NGワードを判定 if(&ngword($in{'name'}) == 1|| &ngword($in{'message'}) == 1|| &ngword($in{'email'}) == 1 || &ngword($in{'url'}) == 1|| &ngword($in{'sub'}) == 1){ &error("投稿内容に不正な文字列が含まれています。"); } を追加。 メモ帳などに ひとつずつ改行しながら禁止したい文字を書いて 「ng.cgi」という名前でwf_init.cgiと同じ場所に保存。 変更したwf_init.cgiと、ng.cgiをアップロード。 ng.cgiのパーミッションはわからなかったので、755でアップロードしました。もっと的確なパーミッションがありそうなので知識のある方はつっこんでください。(^_^;

  • phinexe
  • ベストアンサー率0% (0/1)
回答No.2

ちょっと細かく説明します。 yyregi.cgiの371行目を見てください。 #------------------------------------------------- # 入力確認 #-------------------------------------------------って書いてあります。 ソノ真上に、 sub ngword { open(FH,"./ng.cgi"); @Fdata = <FH>; close(FH); $rtrn = 0; foreach $frch ( @Fdata ){ $frch =~ s/\n//g; if ( $_[0] =~ /$frch/ ) { $rtrn = 1; } } return $rtrn; } を入れてください。私が今さっき適当に作ったサブルーチンです。 その次、sub formCheck {ってのが、そのちょっと下にあるかと思います。 その、 > # 名前とコメントは必須 if ($in{'name'} eq "") { &error("名前が入力されていません"); } if ($in{'comment'} eq "") { &error("コメントが入力されていません"); } if ($in_email && $in{'email'} !~ /[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) { &error("Eメールの入力内容が正しくありません"); } ってヤツの下に、 if(&ngword($in{'name'}) == 1|| &ngword($in{'comment'}) == 1|| &ngword($in{'email'}) == 1 || &ngword($in{'url'}) == 1){ &error("NGワードにひっかかりました。"); } これを入れて保存してください。 NGワード設定したい文字列を、ng.cgiというファイルに入れて、yyregi.cgiと同じファイルに入れて、 一行ずつ、NGワードに設定したいワードを入力して保存しておいてください。 ちなみに、改造する際、変なところ触ると、いっぱつで動かなくなるので注意してください。 それと、ヘタに、「死ね」とか入れると、違う言葉でもひっかけてしまうので、それなりに抑えたほうが良いです。

  • taaaaaaa
  • ベストアンサー率38% (31/80)
回答No.1

最近やはり同じような被害にあってます。 いろいろ対策を考えなきゃなあと、いろいろ案を練ってます。 で、とりあえず『禁止文字』、『禁止URL』などで対応しています。 掲示板で2箇所に設定すれば良いので非常に簡単です。 詳しくは、 http://joho.boo.jp/memo/writer.cgi?mode=detail&no=42 を参照下さい。

参考URL:
http://joho.boo.jp/
yocchan55
質問者

お礼

なるほど。改造といっても大掛かりにはならないのですね。 試してみる価値ありそうです。 勉強がてらソース解析しながらやってみます。 参考の方だとメッセージ中にNGワードがあった場合の改造ですが、 他にハンドル名、メールアドレス、タイトル、URL等も NGワード指定出来るようにしてみたいですね。

関連するQ&A

  • 古いバージョンのYYBBSにNGワードを設定したい

    KENTさんの YYBBS v2.8 HI-HO用 を使用しています。 最近、spam投稿がもの凄く多く困っています。 IPアドレスが毎回同じなのでアクセス制限をかけたのですが、回避されてしまいます。 自分のIPアドレスを設定すると普通に機能して、(自分は)掲示板にアクセスできなくなるのですが、何故かそのspam投稿のIPは制限できません。 「.htaccess」を使用したアクセス制限もダメでした。 それで、NGワードを設定したいと思いました。 新しいバージョンの、YYBBSのスクリプトをDLして参考にし、組み込んでみましたが、上手く動作してくれません。 古いバージョンの過去ログ検索の方が気に入っているので、スクリプトを新しいのに変更したくありません。 どなたか、古いバージョンのYYBBSにNGワードの設定を組み込むやり方をご教授下さい。 よろしくお願いします。

  • 掲示板で、ログファイルに、メールアドレスを書き出さないようにするには?

    こんにちは。kent webさんのyybbsを使用しています。 このyybbs.logに、投稿者のメールアドレスを書き出さないように したいのです。 どの部分を直せばよいでしょうか?

  • YYBBSのことで質問です

    こんにちは。 KENT WEBさんのYYBBSを使い始めたのですが、自分で2回ほどお試し投稿した記事を削除したら、カウントが2となってしまい、せっかく始めた掲示板がNo.3からというのがどうも気に入りません・・・。 これって直す方法はあるのでしょうか? 詳しい方、教えてください。 また、家アイコンが表示されません。これもまた詳しい方、教えてください。 よろしくお願いします。

  • 日本語がまったく入っていない投稿を拒否できる掲示板

    最近、掲示板の荒しに悩んでいます。 ほとんどは、海外からの広告や、意味不明な投稿などなどです。 IPを特定して、海外プロバイダと思われる閲覧をサーバで拒否するようにしているのですが、拒否するごとに違うプロバイダで接続しているようです。 このようなわけで、「日本語」がまったく入っていない投稿を拒否できる掲示板プログラムを探しています。

  • スパム投稿

    掲示板に書き込みしようと思ったら 『スパム投稿と見なされました。 あなたのIPアドレスからはホスト名が逆引きできません』 とエラーメッセージが表示され何度やってもダメでした。 管理人さんに 【逆引きができないIPアドレスからの書き込みを拒否】 をオフにして下さいと頼んだら断られました。 この場合、この掲示板には書き込み不可能でしょうか? 他の方法があれば教えてください。 よろしくお願いします。

  • 掲示板の親記事作成制限について

    自分のホームページに掲示板を設けています。 親記事に対して1行レスを付けられるタイプです。 最近よからぬサイトを案内する投稿が多くて削除に苦労しています。 IPアドレスからアクセス拒否をしても次々と違うIPからアクセスをされては打つ手がありません。 そこで、親記事の作成のみを管理者だけが出来、1行レスはだれでも出来るような方法があるのかどうか、CGIのプログラムにどういう記述をすればよいのか教えてください。

  • 楽天SocialNewsに投稿した記事ついて

    初めて質問させて頂きます。 よろしくお願い致します。 私はワードプレスでブログを持っていて、 記事を投稿するたびに楽天SocialNewsにも投稿していました。 今回このブログの記事を、 別のブログを立ち上げて移動しようと考えているのですが、 楽天SocialNewsのヘルプを見てみると、 「アカウントを削除しても、これまでに投稿した記事やコメント、マイページは残りますので、予めご了承ください。」 と書いてあります。 これは元のブログを削除しても、 検索結果に表示されてしまうということでしょうか? ある記事を検索したときに 楽天SocialNewsの古いブログと新しいブログの2つが検索結果に表示されるのでしょうか? よろしくお願い致します。

  • 企業HPのIPアドレスの公開はNGですか?

    企業のHPを見る場合、http://abc.co.jpといったURLを入力して閲覧しますが、 【http://211.9.36.148】といったように、その企業のHPのIPアドレスを入力すれば そのページを見られることを先日知りました。  また、IPアドレスの逆引きなるツールもあり、そこで調べたIPアドレスを検索 エンジンに入力してみたのですが、検索結果が見つかるIPアドレスと該当なし と表示されてしまうIPアドレスがありました。  直接、IPアドレスを手で入力した場合は、必ずそのHPを見られるのに、 検索エンジンで調べますと、なぜ「該当なし」になってしまうのでしょうか? (1)IPアドレスを他人に知られることはセキュリティの脆弱性を伴うのでしょうか?  (個人がメールやチャットをする場合、自分のIPアドレスを他人に知られることは 危険であることは調べられました。しかし、企業のHPのIPアドレスに関する  もっともな解説を見つけられませんでした。) (2)検索エンジンにIPアドレスを入力して該当する・該当しないと二分するのは   なぜでしょうか?(大手企業でも該当がある場合とない場合がありました。)   どなたか教えていただけませんでしょうか。よろしくお願いいたします。

  • アクセス拒否

    指定したIPアドレスからのアクセスを拒否する、(拒否したときはエラーを表示させる)といったソースはどういうものになりますか?掲示板にその機能をつけようとおもっています。 指定するIPアドレスは、 @denyに格納するとします。

  • YYBBSのスレッドリストを他の掲示板に取り付けたい

    こんにちは、自分のHPには以前YYBBSという比較的高機能な掲示板を設置していたんですが、スパムにやられてしまったため投稿キー入力でスパムをはじくことが出来る機能の付いた掲示板に置き換えていました。(kent-webのibbs) そこで質問なんですが、YYBBSにつている「スレッドリスト」をibbsのほうにも設置するにはどの部分をどのようにいじったらいいでしょうか? アレがあると、一目で記事の状態が確認できるのでイロイロと便利なんですが・・・ (難しいようであれば、NEWやUP等の表示はカットしてかまいません) 言語に関する知識は、他のプログラム(JavaとかCとか)においても当てはまるような極々基本的なことくらいを会得している程度です。

専門家に質問してみよう