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/<>/<>/g;
#タグ禁止処理
# $in{'b_com'} =~ s/</</g;
# $in{'b_com'} =~ s/>/>/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/<>/<>/g;
#タグ禁止処理
# $in{'b_com'} =~ s/</</g;
# $in{'b_com'} =~ s/>/>/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
![]()
『旧:野良猫のCGI講座』
以前の『野良猫のCGI講座』をご覧になりたい方は、『旧:野良猫のCGI講座』からアクセスして下さい。
但し、更新は一切していません。
(※「旧:野良猫のCGI講座」には「TOWN」に関する記述はありません。)