- 追加された行はこの色です。
- 削除された行はこの色です。
**403エラーを404エラーとして返す方法 [#s99a5b9d]
*403エラーを404エラーに見せかける [#i98abd04]
#Contents
**概要 [#x507eb71]
Indexesオプションが設定されていないディレクトリを参照した場合にクライアントに対しては403エラーが返される。これはアクセスは拒否するがディレクトリが存在することを教えてしまう結果となる。~
ユーザがアクセスできないディレクトリの存在を知られてしまうことで、ファイル名を狙った辞書攻撃などが行われる可能性があるため、アクセス拒否するディレクトリの存在自体を隠蔽するには403エラーを返さない(404エラーとして返す)ことが望ましい。
**方法 [#h6d24299]
403エラーを404エラーとして返すには、Perl、PHPなどで作成したCGIによりHTMLヘッダー情報を書き換える方式がある。~
これは404エラーを返すCGI作成し、このCGIを403エラーのエラードキュメントとして設定する方法となる。
**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