ホームページ >バックエンド開発 >PHPチュートリアル >Apacheの非サイトインデックスへのアクセス制限

Apacheの非サイトインデックスへのアクセス制限

WBOY
WBOYオリジナル
2016-06-13 12:48:21884ブラウズ

Apache の非サイト ディレクトリへのアクセス制限
Apache 設定にセクションがあります
エイリアス/test "/var/www/web2/test"
d77295401dbafd9305efa85e0093a80b
オプション FollowSymLinks インデックス MultiViews
AllowOverride なし
注文の許可、拒否
すべてから許可
ca03b1d7dda32cea9b229e29d6cd8210



この時点で /var/www/web2/test ディレクトリに php ダウンロード ページがある場合
down.php はおそらく次のようになります:

$filename=$_GET["file"];<br />
 <br />
ob_end_clean();<br />
header("Expires: 0");<br />
if(!$file = @fopen($filename,'r')){<br />
        echo 'read error';<br />
        exit();<br />
}<br />
 <br />
flock($file,LOCK_SH);<br />
$filesize=filesize($filename);<br />
 <br />
Header("Content-type: application/octet-stream");<br />
Header("Accept-Ranges: bytes");<br />
Header("Accept-Length: ".$filesize);<br />
Header("Content-Disposition: attachment; filename=" . $file_name);<br />
if($filesize>0)<br />
{<br />
        echo fread($file,$filesize);<br />
}<br />
fclose($file);<br />
ob_get_contents();<br />
ob_end_clean();<br />
exit;




このページのテストには大きな抜け穴があります。顧客はブラウザに down.php を入力しますか?ファイル=../../../etc/xxx
システムファイルも同様にダウンロードできます。
サイトがその独自のディレクトリとサブディレクトリにのみアクセスでき、他のディレクトリにはアクセスできないように Apache を設定するにはどうすればよいですか?


-----解決策--------------------------------
Apache 自体にはこの機能がありません。また、この機能は必要ありません
Apache は単なるセッターだから

php.ini
で設定できます。 open_basedir = アクセスが許可されているパスのリスト

open_basedir を Apache の httpd.conf または .htaccess
に置くこともできます。 php_admin_value open_basedir アクセスを許可するパスのリスト
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPとcmsの関係次の記事:PHPとcmsの関係