3

私は友人と一緒に小さなウェブプロジェクトに取り組んでいます。多くのMySQLクエリが含まれるためConnectToDatabase()、サーバーに接続してデータベースを選択する関数を作成しました。

これは次のようになります。

function ConnectToDatabase()
{
    mysql_connect("db.myawesomehost.com", "Bob", "correcthorsebatterystaple");
    mysql_query("USE BobDB;");
}

このようにクレデンシャルをハードコーディングするのは本当に気分が悪いです。しかし、私はそれを処理する他の方法を考えることはできません。定数に入れても実際には何も解決されません。テキストファイルに非表示にするのはばかげているようです。

私も気にする必要がありますか?たくさんの人がいる大規模なプロジェクトでは、これはどのように処理されますか?

4

4 に答える 4

3

それを別の構成ファイルに分解します。1つは、少なくとも「DEBUG_MODE」のような変数を設定して、テスト環境のクレデンシャルの本番クレデンシャルを切り替えることができるようにすることです。オプションで、必要に応じて個別のファイルをバージョン管理下に置くことはできません。または、ユーザーがグローバルなクレデンシャルにアクセスする代わりに独自のクレデンシャルを提供する必要があるように、コードリポジトリにダミーのクレデンシャルを持つファイルを保持することもできます。

于 2011-09-01T14:12:29.520 に答える
2

クレデンシャルをハードコーディングしないでください。最良の方法は、構成ファイルから読み取り、それらをキャッシュすることです。その場合でも、クレデンシャルをクリアテキストに入れない方がよいでしょう。クレデンシャルを構成ファイルで暗号化する必要があります。WSO2では、構成ファイルから読み取ったすべての資格情報が暗号化された状態に保たれ、Secure Valut [一般的なアプローチ]と呼ばれるアプローチを使用して、暗号化された資格情報を読み取り、必要なアプリケーションにクリアテキストで提供します...

ありがとう...

于 2011-09-03T05:37:47.037 に答える
1

他の回答が示唆しているように、ほとんどの大規模プロジェクトは、プロジェクトのどこかに、通常は構成ファイルにユーザー名とパスワードをハードコーディングします。別の方法でそれを行うものを見たことがありませんが、ログインしていないユーザーがデータベースにアクセスする必要がない特定のケースでは、DB資格情報を暗号化し、全員のパスワードをパスフレーズとして使用して復号化することができます。もう1つの欠点は、ユーザーがパスワードを忘れた場合、管理者の介入なしにパスワードを回復できず、既存のすべてのユーザーがパスワードをリセットする必要があることです。

于 2011-09-01T14:23:34.883 に答える
1

一般的なRails構成 では、ユーザー名とパスワードがファイルに保存されています。

マシン固有の情報を共有せずにコードを共有できるように、それらを分割することは合理的と思われます。これは、開発DBに複数のユーザーがいる複数の開発者にとって便利です。

ファイル、特にxml、json、yaml、...などの形式のファイルからの読み取りはそれほど大きな負担にはなりません。

于 2011-09-01T14:14:31.047 に答える