ファイル(pdf、doc、flvなど)をバッファーに読み込んで、スクリプトでユーザーに提供しています。スクリプトにはファイルにアクセスできるが、ファイルへの直接アクセスを許可しないようにする必要があります。これを達成する最良の方法は何ですか?私の権限で何かをするか、.htaccessでディレクトリをロックアウトする必要がありますか?
Damienが提案したように、最も安全な方法は、保存したいファイルをWebルートディレクトリの外に置くことです。これは、Webサーバーが独自の特権ではなく、ローカルファイルシステムの特権に従うために機能します。
ただし、Webルートへのアクセスのみを許可するホスティング会社が多数あります。ファイルへのHTTPリクエストを引き続き防ぐには、すべての通信をブロックする.htaccessファイルを使用して、それらを単独でディレクトリに入れます。例えば、
Order deny,allow
Deny from all
ディレクトリのローカル権限により、Webサーバーがファイルを読み取って実行できるため、Webサーバー、したがってサーバー側の言語は引き続きそれらを読み取ることができます。
乾杯。
これが、URLからiniファイルへの直接アクセスを防ぐ方法です。ルートの.htaccess
ファイルに次のコードを貼り付けます。 (追加のフォルダを作成する必要はありません)
<Files ~ "\.ini$">
Order allow,deny
Deny from all
</Files>
私のsettings.ini
ファイルはルートにあり、このコードなしではwww.mydomain.com/settings.iniにアクセスできます
httpd.confでブラウザとwgetアクセスをブロックして、特にdb.incまたはconfig.incなどのファイルをインクルードします。複数のファイルディレクティブを作成する代わりに、ディレクティブでファイルタイプをチェーンすることはできません。
<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>
apacheを再起動する前に設定をテストする
service httpd configtest
その後(グレースフルリスタート)
service httpd graceful
ファイルはPHPスクリプトと同じサーバーにありますか?その場合、ファイルをWebルートから遠ざけて、PHPスクリプトが保管場所の許可。
Httpd.confファイル(ubuntuでは/ etc/Apache2ディレクトリにあります)にアクセスできる場合は、特定のディレクトリの.htaccess
ファイルに追加するのと同じ行を追加する必要があります。それは(たとえば):
ServerName YOURSERVERNAMEHERE
<Directory /var/www/>
AllowOverride None
order deny,allow
Options -Indexes FollowSymLinks
</Directory>
情報を制御するすべてのディレクトリに対してこれを行います。すべてのアクセスを管理するために、1つの場所に1つのファイルがあります。上記の例では、ルートディレクトリ/ var/wwwに対して実行しました。
このオプションは、外部委託ホスティング、特に共有ホスティングでは利用できない場合があります。ただし、多くの.htaccess
ファイルを追加するよりも優れたオプションです。
(CodeIgniterで使用されるような)カスタムモジュールベースの.htaccessスクリプトはどうですか?試したところ、CodeIgniterアプリでうまく機能しました。他のアプリで使用するアイデアはありますか?
<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>
Webアクセスから.iniファイルを防ぐには、Apache2.confに以下を入力します
<Files ~ "\.ini$">
Order allow,deny
Deny from all
</Files>