[新着] Webテンプレートを仮オープンしました
SetEnvIf Request_URI "/html/(index\.html)?" Ref1 SetEnvIf Referer "abcdef.jp/html/" Ref2 order deny,allow deny from all allow from env=Ref1 allow from env=Ref2
SetEnvIf Request_URI "/html/(index\.html)?" Ref1 SetEnvIf Referer "abcdef.jp/html/" Ref2 order deny,allow deny from all allow from env=Ref1 allow from env=Ref2 order allow,deny allow from all deny from 111.222.333. deny from yahoo.co.jp
SetEnvIf Request_URI "/html/(index\.html)?" Ref1 SetEnvIf Referer "abcdef.jp/html/" Ref2 SetEnvIf Remote_Addr "111\.222\.333\." Ref3 SetEnvIf Remote_Host "yahoo\.co\.jp" Ref3 order deny,allow deny from all allow from env=Ref1 allow from env=Ref2 deny from env=Ref3
SetEnvIf Remote_Addr "111\.222\.333\." !Ref1 !Ref2 SetEnvIf Remote_Host "yahoo\.co\.jp" !Ref1 !Ref2指定された条件を満たす時、設定された環境変数を無効にするというものです。
SetEnvIf Request_URI "/html/(index\.html)?" Ref1 SetEnvIf Referer "abcdef.jp/html/" Ref2 SetEnvIf Remote_Addr "111\.222\.333\." !Ref1 !Ref2 SetEnvIf Remote_Host "yahoo\.co\.jp" !Ref1 !Ref2 order deny,allow deny from all allow from env=Ref1 allow from env=Ref2
SetEnvIf Remote_Addr "111\.222\.333\." !Ref1 !Ref2の「!Ref1 !Ref2」は
allow from env=Ref1 allow from env=Ref2つまり「allow=許可」してしまうという意味ではないかな?と思って。
SetEnvIf Request_URI "/html/(index\.html)?" Ref1 SetEnvIf Referer "abcdef.jp/html/" Ref2 SetEnvIf Remote_Addr "111\.222\.333\." !Ref1 !Ref2 #SetEnvIf Remote_Host "yahoo\.co\.jp" !Ref1 !Ref2 order deny,allow deny from all allow from env=Ref1 allow from env=Ref2
以下のサンプルCGIをサーバにアップして、ブラウザーで見てください。もし何も表示されなければNGです。ホスト名(場合によってはIPアドレス)が表示されればOKです。#!/usr/local/bin/perl
print "Content-Type: text/html\n\n";
print "$ENV{'REMOTE_HOST'}";http://www.futomi.com/lecture/htaccess/allow_deny.html***(※)
REMOTE_HOST 環境変数を用いて、接続元ホスト名を取得することは可能です。 REMOTE_ADDR 環境変数を用いて、接続元ホストのIPアドレスを取得することは可能です。 ※ただし、相手側ホストにて、逆引きが設定されていない場合は、接続元ホスト名を取得することはできません。 1) HTMLが置かれているディレクトリ以下のコマンドのみ呼び出せます。コマンドパス が張ってある場合も同様です。 2) 絶対パスのコマンドは呼び出せません。 /bin/echo や /bin/date も直接の呼び出し はできません。 3) 引数はつけても無視されます(引数は機能しません)。 例: <!---#exec cmd="test abc" --> と書いても引数 abcはtest というコマンド に渡されません。exec cgi= も同様です。URL の引数も渡されません。
<!--#echo var="REMOTE_HOST"--><br> <!--#echo var="REMOTE_ADDR"-->そしたら、
<object id="MediaPlayer1" classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" width="280" height="45" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject"> <param name="SRC" value="file1/BGM.mp3"> <param name="AUTOSTART" value="false"> <param name="CONTROLS" value="ControlPanel"> <param name="CONSOLE" value="cons"> <param name="NOLOGO" value="true"> <param name="ShowDisplay" value="false"> <embed type="audio/mp3" src="file1/BGM.mp3" autostart="false" width="280" height="45" controls="ControlPanel" console="cons" nologo="true" showdisplay="false"> </embed> </object>
SetEnvIf Request_URI "/html/file/($\.html)?$" Ref1 SetEnvIf Referer "$" Ref2 order deny,allow deny from all allow from env=Ref1 allow from env=Ref2
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="536" height="357"> <param name="movie" value="file2/Flash.swf"> <param name="quality" value="high"> <embed src="file2/Flash.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="536" height="357"></embed> </object>
#!/usr/local/bin/perl
open FILE,">>test.txt";
$t = time();
print FILE "$t: $ENV{'HTTP_REFERER'}\n";
close FILE;
print "Location: BGM.mp3\n\n";value="file1/get_referer.cgi" src="file1/get_referer.cgi"
1173556846: 1173556847:特に、ホスト名とかIPとかではありませんでしたけど、この数字だけで