PHP の必須/インクルード ファイルの場合、拡張機能と拡張機能を使用する方が良いです.inc
か?.inc.php
.php
3 に答える
場合によっては、.inc
拡張機能を使用してからサーバー構成を行っ.inc
て、Web ブラウザー経由でファイルにアクセスできないようにすることがあります。知識のあるシステム管理者によって完全に正しく行われれば、これは良いことかもしれませんが、より良い方法があります。Web ユーザーがアクセスすることを想定していないファイルは、ドキュメント ルートの外に保管する必要があります。これらのファイルが Web から削除されると、いわば、任意の拡張子を使用できます。.php
構文の強調表示、一般的な健全性などにとって、間違いなく賢明な選択です。
私の個人的な好みは、ドキュメント ルートにあるものはすべて .php ファイルであり、それが Web サーバーによって直接実行可能であることを示し、ライブラリであるものはすべて、並列ディレクトリに格納された .inc ファイルであり、直接実行可能でないことを示すことです。
私の標準構成は
/home/sites/example.com/html/
- ここにあるものは、PHP が失敗して未加工のコードを提供した場合に公開しても「安全」です。
/home/sites/example.com/inc/
- ライブラリ、パスワード付きの構成ファイル (例: DB 認証情報付きのデータベース接続クラス) など。理由がないため、公開してはならないもの。
.inc ファイルへのアクセスを拒否し、それらを webroot 内に保持するように Apache を設定することは確かにできますが、安全を維持するために Apache に依存することになります。PHP が Apache 内で失敗してコードが公開される可能性がある場合、.inc ブロックも失敗してコードの内部も公開される可能性があります。
もちろん、Apache が血を吐き出しているのであれば、ディレクトリ トラバーサル保護も同様に失敗して、誰かにhttp://example.com/../inc/seekritpasswords.txtを実行させないわけにはいきません。
ある時点で、何かが Web サーバーのどこかに保存されている場合、障害によって生データへのアクセスが許可され、すべてが公開される可能性があることを受け入れる必要があります。それを防ぐためにどれだけの時間と労力を費やしたいかは、あなた次第です。
Apache は、(バグや重大なクラッシュにより) .php ファイルをテキストとして提供することがあります (共有ホスティングで数回発生しました)。パブリック フォルダー内のファイル。
あなたのサイトが /home/user/public_html/ にあるとしましょう
/home/user/lib_php/
に別のフォルダーを作成します:
(1) .../lib_php/one.class.php で
class one {
//...
}
(2) .../lib_php/two.function.php で
function two() {
//...
}
/public_html にメインの index.php があります
<?php
include_once('../lib_php/one.class.php');
include_once('../lib_php/two.function.php');
$x=a;
$b=two($x);
$c=new one;
//etc..
また
<?php
require_once('/home/user/lib_php/the.file.php');
このようにして、ファイルに直接到達することはできませんが、スクリプトで使用できるようにあらゆる予防策を講じています...