Apacheの非サイトディレクトリへのアクセス制限
Jun 23, 2016 pm 02:06 PM Apache 設定にセクションがあります
エイリアス /test "/var/www/web2/test"
<ディレクトリ "/var/www/web2/test">
オプション FollowSymLinks インデックス MultiViews
AllowOverride なし
順序allowed,den y
すべてから許可
</Directory>
この時点で /var/www/web2/test ディレクトリに php ダウンロード ページがある場合、
down.php は次のようになります:
$filename=$_GET["file"]; ob_end_clean();header("Expires: 0");if(!$file = @fopen($filename,'r')){ echo 'read error'; exit();} flock($file,LOCK_SH);$filesize=filesize($filename); Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length: ".$filesize);Header("Content-Disposition: attachment; filename=" . $file_name);if($filesize>0){ echo fread($file,$filesize);}fclose($file);ob_get_contents();ob_end_clean();exit;
このページのテストには大きな抜け穴があります。顧客はブラウザに down.php を入力しますか? file=../../../etc/xxx
システムファイルのダウンロードに似ています。
サイトが独自のディレクトリとサブディレクトリにのみアクセスでき、他のディレクトリにはアクセスできないように Apache を設定するにはどうすればよいですか?
ディスカッションへの返信 (解決策)
サーバー権限!
suPHP をセットアップして、別のユーザーの権限で PHP を実行するだけです
if(preg_match('#../#',$filename)){
exit
}
Apache 自体にはこの機能はありません。また、それも必要ありません
Apache は単なるセッターであるため、この関数は必要ありません
php.ini で open_basedir = アクセスを許可されるパスのリストを設定できます
Apache の httpd.conf または .htaccess に open_basedir を置くこともできます
php_admin_value open_basedir allowed アクセスされるパスのリスト
Apache は単なるセッターであるため
php.ini で open_basedir = アクセスを許可されるパスのリスト を設定できます
open_basedir を Apache の httpd.conf または .htaccess に置くこともできます
php_admin_value open_basedir を使用すると、パスのリストにアクセスできます
……
いいですね

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LaravelのバックエンドでReactアプリを構築する:パート2、React
