質問者 fitoncid
投稿日 2004/3/26(金) 05:19:47
ひとつの本体スクリプトform2mail.cgiを設置し、
それを複数のサイトから利用しようとしています。
セキュリティのために参照チェックは有効にしたいのですが
そのアクセス元を複数許可設定するところでつまづいています。
-------------------------------
#送信フォームのURLがここに設定した文字列を含まない場合は送信しない
$ref_url = 'aaa.com';
#■アクセス元をチェックする(いたずらで困っている場合のみ) 0:しない 1:する
$ref_check = 1;
if ($ref_check) {
$ref = $ENV{'HTTP_REFERER'};
$ref =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
if (!($ref =~ /$ref_url/i)) { &error('Forbidden','実行できるフォーム以外からのアクセスを検知しました.'); }
}
-------------------------------
となっている部分を、
-------------------------------
#送信フォームのURLがここに設定した文字列を含まない場合は送信しない
@ref_url = ("aaa.com","bbb.jp");
#■アクセス元をチェックする(いたずらで困っている場合のみ) 0:しない 1:する
$ref_check = 1;
if ($ref_check) {
$ref = $ENV{'HTTP_REFERER'};
$ref =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
foreach $var(@ref_url){
if(!($ref =~ /$var/i)) { &error('Forbidden','実行できるフォーム以外からのアクセスを検知しました.'); }
}
}
-------------------------------
とすれば良いかと思ったのですが、
これでは不備があるようで、許可したいサイトからもForbiddenになります。
どのように直せばよいか、ぜひアドバイスください。
よろしくお願いします。
プロバイダ参照:
サーバのOS:(未選択)
パソコンのOS:(未選択)
エディタ:
FTPソフト:
サーバ移転:していない
改造:している 改造前正常動作
CGI習熟度:middle
|