• 追加された行はこの色です。
  • 削除された行はこの色です。
**403エラーを404エラーとして返す方法 [#s99a5b9d]
*403エラーを404エラーに見せかける  [#i98abd04]
#Contents
**概要 [#x507eb71]
Indexesオプションが設定されていないディレクトリを参照した場合にクライアントに対しては403エラーが返される。これはアクセスは拒否するがディレクトリが存在することを教えてしまう結果となる。~
ユーザがアクセスできないディレクトリの存在を知られてしまうことで、ファイル名を狙った辞書攻撃などが行われる可能性があるため、アクセス拒否するディレクトリの存在自体を隠蔽するには403エラーを返さない(404エラーとして返す)ことが望ましい。

**方法 [#h6d24299]
403エラーを404エラーとして返すには、mod_asisモジュールもしくはCGIによりHTMLヘッダー情報を書き換える方式がある。~
これは共に403エラー時のエラードキュメントに404エラーのHTMLヘッダー情報を送るファイルを参照させることでエラーコードを書き換える手法となる。~
~
**mod_asis方式 [#n1101d2d]
***mod_asisの設定 [#cdd9da28]
mod_asisが導入されていることを前提とする。~

-mod_asisファイル
 /usr/local/apache/modules/mod_asis.so

-httpd.confへの設定~
以下の設定後、apacheを再起動し設定を反映させる。~
 LoadModule asis_module modules/mod_asis.so
 AddHandler send-as-is asis

***エラードキュメントファイルの作成 [#kf97cdd1]
-404.asis
 Status: 404 not found
 Content-type: text/html 
 
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <html><head>
 <title>404 Not Found</title>
 </head><body>
 <h1>Not Found</h1>
 <p></p>

-エラードキュメントの設定~
404エラーのエラードキュメントを設定する。(パスは環境に合わせて読み変える)~
apacheを再起動し設定を反映させる。~
 ErrorDocument 403 /404.asis
 ErrorDocument 404 /404.asis

**CGI方式 [#qc6c09b1]
***CGI作成 [#se961ed9]
HTMLヘッダーを書き換えるCGIを作成し、参照可能な場所に配置する。

-perlの場合
 #! /usr/bin/perl
 print <<HTML;
 Status: 404
 Content-type: text/html 
 
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <html><head>
 <title>404 Not Found</title>
 </head><body>
 <h1>Not Found</h1>
 <p></p>
 HTML
 __END__

-PHPの場合
 <?php
 header("HTTP/1.0 404 Not Found");
 ?> 

***apache設定 [#eb2f4026]
404エラーのエラードキュメントを設定する。(パスは環境に合わせて読み変える)~
apacheを再起動し設定を反映させる。

-Perlの場合
 ErrorDocument 403 /cgi-bin/404.cgi
 ErrorDocument 404 /cgi-bin/404.cgi

-PHPの場合
 ErrorDocument 403 /404.php        
 ErrorDocument 404 /404.php


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS