調査を通じて、クライアントがブラウザを使用してライブラリに直接アクセスできないようにするための2つの一般的な手法を発見しました。
.htaccess
それらを締め出すために使用する- 定数を定義し、それをインクルードファイルに渡します。インクルードファイルは、定数が存在するかどうかを確認します。
ただし、これらのファイルをドキュメントルートから除外することは賢明なようです。このアプローチに何か問題がありますか?
最善の方法は、それをdocrootの外に置くことです。インクルードを直接HTTPアクセス可能な場所に配置する理由はありません。
一部の共有ウェブホストは構成が不十分で、このオプションがありませんが、ほとんどの場合、このオプションは自分のサーバーまたはVPSで確実に選択できます。
ブラッドの答えを完成させるために、フォルダーを整理する方法は次のとおりです。
/path/to/project/
public_html/
index.php
includes/
includes.php
Web サーバーのルート フォルダーはpublic_html
.
この構造を変更できない場合、許容される唯一の方法は、a .htaccess
(または同等のもの) を使用してincludes
公開アクセスを防止することです。
Apache ウェブサーバーを使用している場合、すべての .inc.php ファイルへのアクセスを拒否できます。Apache Vhost 構成に以下を追加するだけです。
<FilesMatch .inc.php>
Order allow, deny
deny from all
</FilesMatch>
これらのファイルを php コードに含めることもできます。
ライブラリファイルがクラス/関数などを定義するだけで、サーバーがソースを表示できるように構成されていない場合、とにかくWebサーバー経由でスクリプトを要求しても何も達成されません. そうは言っても、可能であれば、ドキュメント ルートの外に保存することもできます。