1

PHP で Web アプリケーションをプログラミングする場合、MySQL 情報が第三者 (第三者) によって開示または発見されるのを防ぐ最も効率的な方法は何ですか? この情報には、接続機能で使用されるドメイン名とログインおよびパスワードが含まれます。

例として、mysql 接続関数を別の php ファイルなどに保持するのが適切な手順である可能性があります。

何か案は?

4

4 に答える 4

4
  1. 資格情報をドキュメント ルートの外部.phpの別のファイルに保存します(そのため、Web 経由で直接アクセスすることはできません)。
  2. Web 経由で誤ってアクセスできた場合でも実行され、直接表示されないよう.phpに、たとえば ではなくファイルに保存することをお勧めします。.inc
  3. 接続を確立した後は、ユーザー名とパスワードを保持しないでください (つまり、資格情報を保持している vars または配列キーが不要になったら、設定を解除します)。もう持っていないものを誤って公開することはできません
  4. if (defined('DB_AUTH_LOADED')) return; define('DB_AUTH_LOADED', 1);資格情報変数の再定義を避けるために、資格情報ファイルを繰り返し含めることを許可しないでください (資格情報ファイルなど)。

これにより、資格情報への直接アクセスや、独自のコードによる資格情報の偶発的な漏洩から保護されます。攻撃者が PHP ファイルをサーバーにアップロードし、実際にそれらを実行できた場合、戦いはほとんど負けてしまいますが、上記の対策により、誤って自分の信用情報を漏らしてしまうことを防ぐことができます。

于 2012-09-19T09:53:23.030 に答える
2

これが最高かどうかはわかりませんが、これが私のやり方です。

DB接続の資格情報を保持しているconfig.phpファイルがあり、直接アクセスできません。接続を確立するためにconfig.phpを必要とするDBクラスがあり、DBクラスを拡張するサイトクラスがあります。

これは非常に一般的な方法であり、一般的に受け入れられています。

于 2012-09-19T09:45:48.193 に答える
2

(資格情報が侵害された場合に) できるもう 1 つのことは、PHP が使用するタスク用に設定した mysql ユーザーが DROP ステートメントを作成できないようにすることです。

そのユーザーに、可能な限り他のデータベースへのアクセス レベルを与えます。おそらく、そのユーザーのデータを保持するデータベースのみにします。

于 2012-09-19T10:48:58.883 に答える
1

クラス、含まれていますか?それを行う方法はたくさんありますが、最終的に誰かが未解析のPHPファイルにアクセスできる場合は、MySQLログインの詳細が表示されます。

于 2012-09-19T09:44:30.267 に答える