9

How do I secure my database connection credentials?この質問が何度も出題され、回答されていることは知っています (例: How to secure database passwords in PHP? )。

この質問に対する一般的な回答は、Web ルートの外部に詳細を保存することです。しかし、なぜこれが実際に大きな違いを生むのか、私は興味があります。

私が理解していることから、HTTP 経由で PHP ファイルのソースをダウンロードすることはできません (Web サーバーが適切に構成されていない場合を除きますが、そのことはすぐにわかります)。とにかくPHPファイルのソースにアクセスできない限り、資格情報を見ることはできません。私が間違っている場合は訂正してください。しかし、これは基本的に、シェル アクセスが必要になるということではないでしょうか? また、シェル アクセス権がある場合は、Web ルートの外部にあるファイルにアクセスすることはできませんか?

その質問に対する答えが、インクルード ファイルには、Web サーバー ユーザー以外の誰もそれを読み取ることを許可しない特別なアクセス許可がある可能性があるということである場合、(私がシェル アクセス権を持っていることを考えると)、単に書き込み (または変更) することはできませんでした。それらの資格情報をエコーアウトするPHPファイルはありますか?

問題は、資格情報を PHP スクリプトに直接保存するか、Web ルートの外部のファイルに保存するかで、実際に違いがあるのでしょうか?

4

3 に答える 3

8

Web サーバーのエラーにより、Web サーバーが php ファイルを処理しなくなり、それらを html ファイルとして扱うとします。

その場合http://mysite.com/config.php、データベースの資格情報を簡単に明らかにするようなものがあります。

答えは次のとおりです。はい、データベース資格情報をどこにどのように保存するかは本当に重要です。

于 2012-10-11T13:50:47.700 に答える
5

主な問題は、Web サーバーが後で故障する可能性があることです。たとえば、ソフトウェアの更新後、php が正しく機能しなくなり、サーバーはファイルを直接配信するようにフォールバックします。または、ソフトウェアの更新後に構成がリセットされる可能性があるため、PHP はファイル拡張子に登録されなくなります。または、サーバーが高負荷で故障し、ファイルの配信も平易に開始します。

多くのことが発生する可能性があり、ある時点で構成を台無しにするのはかなり簡単です。安全を確保し、ドキュメントルートの外に保管してください。

于 2012-10-11T14:02:08.317 に答える