は秘密(あなたがApacheがこれを確認するために得ることができるヘッダが存在
あるかどうかを確認するために、.htaccessファイルにいくつかのコードを記述し、[JavaScriptを使用して]リクエストに余分なヘッダを供給し、 )ヘッダーを読み取り、REQUEST_URI
(または渡されたクエリ文字列パラメーター)を読み取り、代わりにファイルソースを返すviewAsSource.php
型ファイルに要求を内部的に書き換えます。 @LucasKrupinskiの提案と似ていますが、PHPファイル自体に何も含める必要はありません。 X-Action
HTTPリクエスト・ヘッダーは、このチェックは「表示ソース」の値を有し、要求されたファイルが存在するすべての.php
要求に対して
RewriteEngine On
# Block direct access to any file in the /tools directory
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^tools/ - [F]
# Display PHP source...
RewriteCond %{HTTP:X-Action} ^display-source$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.+\.php)$ tools/display-source.php?url=$1 [L]
:ルート.htaccess
ファイル、例えば
、。これらの条件が満たされた場合、要求は内部で/tools/display-source.php
スクリプトに書き込まれ、url
パラメータのURLが渡されます。代わりに、$_SERVER['REQUEST_URI']
スーパーグローバルをチェックすることもできますが、これには要求に渡されるクエリ文字列も含まれています。
はその後、display-source.php
に、のようなもの:
<?php
$url = isset($_GET['url']) ? $_GET['url'] : null;
if (isset($url)) {
$file = $_SERVER['DOCUMENT_ROOT].'/'.$url;
// Validate $file....
// :
highlight_file($file);
}
は[mod_rewriteの](https://httpd.apache.org/docs/current/mod/mod_rewrite.html)を見てください。要求をいくつかのsendsource.phpスクリプトに書き換えることができます。 –
クライアントがサーバが解析するファイルを選択できるようにするのではなく、解析されない出力がオプションになるファイルをサーバ側で決めるのはなぜですか?そうすれば、機密性の高いデータが漏洩しないことがはるかに確実になります。 –
@LucasKrupinskiすべてのファイルは解析が可能でなければなりません。できればデフォルトで解析するのが望ましいでしょう。いくつかのディレクトリにあるファイルについては、ソースをオプションにしたいと思っています。 – tjespe