私のウェブサイトには、他のPHPファイルにインクルードするPHPファイルがあります...それらはDBへの接続やその他のさまざまな機能などのさまざまなタスクを実行します...これでファイルの指定されたパスがわかりました。そのため、次のようにパスを指定できます。
http://www.mysite.com/myfiles/
これにより、そのディレクトリ内のファイルのディレクトリ リストが表示されます。
ディレクトリリストを避けるためには、ファイル名を入力するindex.html
か、index.php
ディレクトリリストの代わりに入力すればよいことが分かっています
しかし、ファイルのパスはまだわかっています。http://www.mysite.com/myfiles/con.php
これを行うと、コードは実行されますが、クライアント側であるため、ソースを OFFCourse で確認できます。
しかし、誰かがパスを知っている場合に、そのPHPファイルとそのソースコードを取得する方法はありますか...それはセキュリティ上のリスクになりませんか?
答え1
まず、includes ディレクトリの .htaccess ファイルに次の行を追加するだけで、ディレクトリ リストを無効にできるはずです (これにより、ディレクトリ ツリーを無駄な index.php ファイルで汚染する必要がなくなります)。
Options -Indexes
さて、ユーザーが PHP ソース コードを取得できることに関しては、Web サーバーが PHP ファイルを解釈し、直接提供しないように正しく設定されている限り、問題はありません (インクルード ファイルにecho()
変数などが含まれていないことを前提とします)。
答え2
PHP ファイルに AddType または SetHandler が定義されている場合、クライアントに提供される前に apache/webserver によって解釈されます。そのため、クライアントは PHP ソースではなく、生成された HTML のみを参照します。
答え3
私の理解が正しければ、PHP ファイルの実際の URL を知っている人のために PHP ソースを取得したいということですね。そのような方法を使用することもできますが、覚えておいてください。これは本当のセキュリティではないので、DB ユーザー名やパスワードなどのプライベートな情報を含む PHP ファイルにはこれを含めない方がよいでしょう。
<?php
if($_GET['hash'] === "jV1V-7-VhS09K-_77GtEoOd86K2-ba-W") {
show_source(__FILE__);
}
?>
この方法だと、その「ハッシュ」を知っている人(またはブルートフォース攻撃を仕掛けてくる悪意のある人)だけが、次のURLにアクセスしてソースコードを入手することができます。http://example.org/myfiles/con.php?hash=jV1V-7-VhS09K-_77GtEoOd86K2-ba-W。