TOWN

セキュリティ対策

「掲示板」の不正防止

「掲示板」の不正防止方法を紹介します。

改造場所

■「orijinal_house.cgi」

改造内容

■「orijinal_house.cgi」をエディタで開き、下記部分を探して下さい。 (※表示の都合上改行が加えてあります。)

#BBS投稿処理
sub bbs_regist {
     &lock;
#ログファイル更新
     # ログを読み込み
     if ($in{'ori_ie_id'} eq "admin"){
          $bbs1_log_file = "./member/admin/bbs".$in{'bbs_num'}."_log.cgi";
     }else{
          $bbs1_log_file = "./member/$in{'ori_ie_id'}/bbs1_log.cgi";
     }
     open(IN,"$bbs1_log_file") || &error("Open Error : $bbs1_log_file");
     # 先頭行を取得
     $total_counter = <IN>;
     ($total_counter,$all_total_counter)= split(/<>/, $total_counter);  #ver.1.40
     $top = <IN>;
     local($b_num,$b_name,$b_date,$b_res,$b_count,$b_com)= split(/<>/, $top);  #ver.1.40
     close(IN);

     $in{'b_com'} =~ s/<>/&lt;&gt;/g;

#タグ禁止処理
#     $in{'b_com'} =~ s/</&lt;/g;
#     $in{'b_com'} =~ s/>/&gt;/g;
# コメントの改行処理
     $in{'b_com'} =~ s/\r\n/<br>/g;
     $in{'b_com'} =~ s/\r/<br>/g;
     $in{'b_com'} =~ s/\n/<br>/g;
     $in{'b_com'} =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g;
#ver.1.30ここから
     $name_seikei = $in{'name'} . "<span style=\"font-size:9px\">($in{'job'})</span>";
     if ($name_seikei eq "$b_name" && $in{'b_com'} eq "$b_com") {
     &error("二重投稿です");
     }
#ver.1.30ここまで
     if ($in{'b_com'} eq "") {
     &error("コメントが入力されていません");
     }

     open(IN,"$bbs1_log_file") || &error("Open Error : $bbs1_log_file");
     @all_data = <IN>;
     shift @all_data;
     $total_kizisuu = @all_data;
     close(IN);

     &time_get;
     $all_total_counter ++;  #トータル記事数をカウントver.1.40
#新規投稿なら新記事Noを取得
     if ($in{'b_res'} eq ""){
          $total_counter++;
#更新配列を定義
          $new_toukou = "$total_counter<>$in{'name'}<span style=\"font-size:9px\">($in{'job'})</span><>$date2<>$in{'b_res'}<>$all_total_counter<>$in{'b_com'}<>\n";  #ver.1.40

          unshift (@all_data,$new_toukou);
          $total_counter = "$total_counter<>$all_total_counter<>\n";  #ver.1.40
          unshift (@all_data,$total_counter);

#レスの場合
     }else{
#更新配列を定義
          $new_toukou = "<>$in{'name'}<span style=\"font-size:9px\">($in{'job'})</span><>$date2<>$in{'b_res'}<>$all_total_counter<>$in{'b_com'}<>\n";  #ver.1.40
          foreach (@all_data){
               ($b_num,$b_name,$b_date,$b_res,$b_mail,$b_com)= split(/<>/, $_);
               if ($b_num eq "$in{'b_res'}" || $b_res eq "$in{'b_res'}"){ push (@top_idou ,$_); next;}
               push (@new_all_data,$_);
          }
          push (@top_idou ,$new_toukou);
          unshift (@new_all_data,@top_idou);
          $total_counter = "$total_counter<>$all_total_counter<>\n";  #ver.1.40
          unshift (@new_all_data,$total_counter);
          @all_data = ();
          @all_data = @new_all_data;
     }  #レスの場合閉じ

■下記赤文字部分を追加して下さい。

#BBS投稿処理
sub bbs_regist {
     &lock;
#ログファイル更新
     # ログを読み込み
     if ($in{'ori_ie_id'} eq "admin"){
          $bbs1_log_file = "./member/admin/bbs".$in{'bbs_num'}."_log.cgi";
     }else{
          $bbs1_log_file = "./member/$in{'ori_ie_id'}/bbs1_log.cgi";
     }
     open(IN,"$bbs1_log_file") || &error("Open Error : $bbs1_log_file");
     # 先頭行を取得
     $total_counter = <IN>;
     ($total_counter,$all_total_counter,$zenkai_name,$zenkai_id)= split(/<>/, $total_counter);  #ver.1.40
     $top = <IN>;
     local($b_num,$b_name,$b_date,$b_res,$b_count,$b_com)= split(/<>/, $top);  #ver.1.40
     close(IN);

     $in{'b_com'} =~ s/<>/&lt;&gt;/g;

#タグ禁止処理
#     $in{'b_com'} =~ s/</&lt;/g;
#     $in{'b_com'} =~ s/>/&gt;/g;
# コメントの改行処理
     $in{'b_com'} =~ s/\r\n/<br>/g;
     $in{'b_com'} =~ s/\r/<br>/g;
     $in{'b_com'} =~ s/\n/<br>/g;
     $in{'b_com'} =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g;
#ver.1.30ここから
     $name_seikei = $in{'name'} . "<span style=\"font-size:9px\">($in{'job'})</span>";
     if ($name_seikei eq "$b_name" && $in{'b_com'} eq "$b_com") {
          &error("二重投稿です");
     }
#ver.1.30ここまで
     if ($in{'b_com'} eq "") {
          &error("コメントが入力されていません");
     }

     # 不正対策 ここから
          # 連続投稿の禁止 ここから
     $renzoku_toukou_check = 0;
     if($in{'name'} eq $zenkai_name){
          if($in{'name'} ne $admin_name){
               if($in{'ori_ie_id'} eq "admin"){
                    &error("連続投稿は出来ません。");
               }else{
                    &openAitelog($in{'ori_ie_id'});
                    if($in{'name'} ne $aite_name){
                         $renzoku_toukou_check = 1;
                    }
               }
          }
     }
     if($renzoku_toukou_check eq 1){
          &error("連続投稿は禁止します");
     }
          # 連続投稿の禁止 ここまで
          # JavaScriptなどの禁止 ここから
     $in{'b_com'} =~ s/javascript/ジャバスクリプト/i;
     $in{'b_com'} =~ s/xmp/XMP/i;
     $in{'b_com'} =~ s/telnet/telnet/i;
     $in{'b_com'} =~ s/iframe/iframe/i;
          # JavaScriptなどの禁止 ここまで
     # 不正対策 ここまで

     open(IN,"$bbs1_log_file") || &error("Open Error : $bbs1_log_file");
     @all_data = <IN>;
     shift @all_data;
     $total_kizisuu = @all_data;
     close(IN);

     &time_get;
     $all_total_counter ++;  #トータル記事数をカウントver.1.40
#新規投稿なら新記事Noを取得
     if ($in{'b_res'} eq ""){
          $total_counter++;
#更新配列を定義
          $new_toukou = "$total_counter<>$in{'name'}<span style=\"font-size:9px\">($in{'job'})</span><>$date2<>$in{'b_res'}<>$all_total_counter<>$in{'b_com'}<>\n";  #ver.1.40

          unshift (@all_data,$new_toukou);
          $total_counter = "$total_counter<>$all_total_counter<>$in{'name'}<>$in{'k_id'}<>\n";  #ver.1.40
          unshift (@all_data,$total_counter);

#レスの場合
     }else{
#更新配列を定義
          $new_toukou = "<>$in{'name'}<span style=\"font-size:9px\">($in{'job'})</span><>$date2<>$in{'b_res'}<>$all_total_counter<>$in{'b_com'}<>\n";  #ver.1.40
          foreach (@all_data){
               ($b_num,$b_name,$b_date,$b_res,$b_mail,$b_com)= split(/<>/, $_);
               if ($b_num eq "$in{'b_res'}" || $b_res eq "$in{'b_res'}"){push (@top_idou ,$_); next;}
               push (@new_all_data,$_);
          }
          push (@top_idou ,$new_toukou);
          unshift (@new_all_data,@top_idou);
          $total_counter = "$total_counter<>$all_total_counter<>$in{'name'}<>$in{'k_id'}<>\n";  #ver.1.40
          unshift (@new_all_data,$total_counter);
          @all_data = ();
          @all_data = @new_all_data;
     }  #レスの場合閉じ
掲示板への連続投稿を禁止します。
特定文字の入力を禁止します。(半角文字を全角に変換)

前後の内容

俺ペナTOWN
設置方法セキュリティ対策
「銀行ローン」の不正防止「掲示板」の不正防止「競馬」の不正防止

野良猫タウン

当サイトでは、「野良猫タウン」として「TOWN」を設置・公開しています。
オリジナル改造を施した「のんびりまったりタウン」です。
100名限定で楽しんで頂ければ、嬉しいです♪

【劇ぱわ改造設置支援サイト】Take it easy ! RYOQUEST presents

『野良猫のCGI講座』は、
【劇ぱわ改造設置支援サイト】Take it easy ! RYOQUEST presents のコンテンツとして、虎猫が公開しています。

「劇空間ぱわふるリーグ2 ver 3.00b(劇ぱわ)」は、
きままなまま』で管理人にーやん様が作成・無料配布されているCGI/Perlによる野球ゲームです。

「TOWN」は、
Brassiere』で配布されているCGI/Perlによるゲームです。
サイト自体は現在休止中ですが、製作されたゲームなどの配布は継続されています。

参考にされた方は、当サイトへリンクを貼って下さい♪
サイト名:Take it easy ! RYOQUEST presents
(サイト名:Take it easy !
URL:http://ryoquest.sakura.ne.jp/
バナーURL:http://ryoquest.sakura.ne.jp/image/tie_8831an.gif
Take it easy !

『旧:野良猫のCGI講座』

以前の『野良猫のCGI講座』をご覧になりたい方は、『旧:野良猫のCGI講座』からアクセスして下さい。
但し、更新は一切していません。
(※「旧:野良猫のCGI講座」には「TOWN」に関する記述はありません。)

ページのトップへ戻る