1

まず最初に、完全に安全なソリューションなど存在しないことを認識しています (存在したとしても、その使いやすさはくだらないものです)。

とはいえ、誰かがあなたのコードをダウンロードして盗み出すことによって、MySQL データベースが危険にさらされないようにするにはどうすればよいでしょうか? PHP での私の経験に基づくと、フラグを送信するコード内にある時点または別の時点でそれを格納することが義務付けられているようです。変数、定数、および (ユーザー定義の) 関数名を難読化するためのリファクタリングが有益であることがわかりますが、最終的にはそれを追跡して、DB ログイン情報を含むファイルを見つけることができます。

アイデア?

4

3 に答える 3

4

通常、MySQL 認証情報は外部構成ファイルに保存されます。Web ベースのアプリで使用される MySQL ユーザーには、 などの限定された権限が与えられ、 などの権限は与えられSELECT, INSERT, UPDATE, DELETEませんALTER, DROP, DELETE。コードを一般に公開したい場合は、プライベート構成ファイルを含めずに、代わりに汎用/教育用/最小限の構成ファイルを含めます。

MySQL の認証情報を暗号化された形式で保存することは、秘密鍵/非暗号化もローカルに保存する必要があるため、ややばかげています。認証されていないユーザーがサーバー上のコードまたは構成ファイルを表示するのが簡単な場合、問題はコードではなく、サーバーのセットアップと構成です。

于 2009-12-02T08:43:21.867 に答える
1

pygorex1 は正しいです。「外部」が Web ルートの外部にあるファイルを意味する外部構成ファイルを使用する必要があります。したがって、Web サーバーに構成エラーがあり、ユーザーがソース コードを表示できる場合でも、ブラウザーから直接アクセスできないため、ユーザーはデータベースの資格情報を見ることができません。

pygorex1 は、ユーザー権限も適切です。mysql ユーザーのアクセスを最小限に制限することが常に推奨されます。ハッカーが mysql のパスワードとユーザー名を入手したとしても、ユーザーのアクセス許可が SELECT クエリなどに限定されていれば、重大な損害を与えることはできません。彼が言い忘れていたことの 1 つは、mysql ユーザーは localhost (または Web アプリケーションが存在するホスト) からのログインのみを許可されるべきであり、許可されたホストでは決してワイルドカードを使用してはならないということでした。

于 2009-12-02T08:52:36.980 に答える
1

ハードコーディングされた情報 (構成ファイルまたはスクリプト内) を Web ルートの外部に格納し、(製品コード上で) エラー メッセージを抑制することによって、セキュリティを強化できます。そうすれば、うまくいけば、ユーザーにはそれが表示されませんuserValidate() expects exactly three paramaters

于 2009-12-02T08:48:03.810 に答える