1.特定のIPからの接続を拒否する改造

ホームページを開いていると少なからずとも招かれざる訪問者がいます。
そこでそういう人たちがCGIにアクセスできないようにしたいものです。
今回は特定のIPアドレスの人がCGIにアクセスできなくなる改造を
取り上げようと思います。

test1.cgi
#!/usr/bin/perl

$denyip = "192.168.0.1"; #拒否したいIPアドレス
$ip = $ENV{'REMOTE_ADDR'}; #IPアドレスを取得

if ($ip =~/$denyip/i){
print "Content-type: text/html\n\n";
print "<html><head><title>test.cgi</title></head>\n";
print "<B>現在アクセスを制限させていただいております。</b></html>\n";
exit;
}
 

このCGIでは192.168.0.1からのアクセスがあると
「現在アクセスを制限させていただいております。」
というメッセージを出します。

test2.cgi
#!/usr/bin/perl

$denyfile = "./denyip.txt";
$ip = $ENV{'REMOTE_ADDR'}; #IPアドレスを取得

open(IN,"$denyfile");
@denyips = <IN>;
close(IN);

foreach $dip (@denyips) { 
$dip =~s/\n//g;
if ($ip ne "" && $ip =~/$dip/){ 
print "Content-type: text/html\n\n";
print "<html><head><title>test.cgi</title></head>\n";
print "<B>現在アクセスを制限させていただいております。</b></html>\n";
exit;
}
}
 

denyip.txt
192.168.0.1
192.168.10.2
192.168.25.3
192.168.0.200
このCGIではdenyip.txtにあるIPからのアクセスがあると
「現在アクセスを制限させていただいております。」
というメッセージを出します。

このスクリプトの2行目以降をきりとって
あなたの使っているCGIの2行目にはさむといいかもしれません。
 

応用?ブラウザごとに読み込むHTMを変えるCGI
test3.cgi
#!/usr/bin/perl

$agent = $ENV{'HTTP_USER_AGENT'}; #ブラウザ情報

if ($agent =~/MSIE/i){
$dataf = "ie.htm";
}
elsif($agent =~/Mozilla/i){
$dataf = "mozilla.htm";
}
else{
$dataf = "other.htm";
}

print "Content-type: text/html\n\n";
open(IN,"$dataf");
while (<IN>){print $_;}
close(IN);

exit;

まずはいろいろ試してみましょう。

もどる