PHP で Web アプリケーションをプログラミングする場合、MySQL 情報が第三者 (第三者) によって開示または発見されるのを防ぐ最も効率的な方法は何ですか? この情報には、接続機能で使用されるドメイン名とログインおよびパスワードが含まれます。
例として、mysql 接続関数を別の php ファイルなどに保持するのが適切な手順である可能性があります。
何か案は?
PHP で Web アプリケーションをプログラミングする場合、MySQL 情報が第三者 (第三者) によって開示または発見されるのを防ぐ最も効率的な方法は何ですか? この情報には、接続機能で使用されるドメイン名とログインおよびパスワードが含まれます。
例として、mysql 接続関数を別の php ファイルなどに保持するのが適切な手順である可能性があります。
何か案は?
.php
の別のファイルに保存します(そのため、Web 経由で直接アクセスすることはできません)。.php
に、たとえば ではなくファイルに保存することをお勧めします。.inc
if (defined('DB_AUTH_LOADED')) return; define('DB_AUTH_LOADED', 1);
資格情報変数の再定義を避けるために、資格情報ファイルを繰り返し含めることを許可しないでください (資格情報ファイルなど)。これにより、資格情報への直接アクセスや、独自のコードによる資格情報の偶発的な漏洩から保護されます。攻撃者が PHP ファイルをサーバーにアップロードし、実際にそれらを実行できた場合、戦いはほとんど負けてしまいますが、上記の対策により、誤って自分の信用情報を漏らしてしまうことを防ぐことができます。
これが最高かどうかはわかりませんが、これが私のやり方です。
DB接続の資格情報を保持しているconfig.phpファイルがあり、直接アクセスできません。接続を確立するためにconfig.phpを必要とするDBクラスがあり、DBクラスを拡張するサイトクラスがあります。
これは非常に一般的な方法であり、一般的に受け入れられています。
(資格情報が侵害された場合に) できるもう 1 つのことは、PHP が使用するタスク用に設定した mysql ユーザーが DROP ステートメントを作成できないようにすることです。
そのユーザーに、可能な限り他のデータベースへのアクセス レベルを与えます。おそらく、そのユーザーのデータを保持するデータベースのみにします。
クラス、含まれていますか?それを行う方法はたくさんありますが、最終的に誰かが未解析のPHPファイルにアクセスできる場合は、MySQLログインの詳細が表示されます。