2013-04-12 17 views
5

私は入力を読むためにデータベースにアクセスする必要のあるC++プロジェクトに取り組んでいます。設定ファイルのデータベースパスワードを非表示にする方法

これまでのところ、デフォルトのユーザー名(postgres)と他の多くの設定とともに「固定クリアテキスト」パスワードをxmlベースの構成ファイルに保存しました。

私が必要とするのは、設定ファイルを提供するときにユーザーからパスワードを隠すことです。

FYI:開発領域はLinux、データベースはpostgresqlです。私たちは、データベースに接続し、パスワードを知らなくても、それを使用するユーザーに設定ファイルをさせていただきたいと思い

あなたが迅速かつ容易に参照を示唆している場合、私は感謝します。

(小さな読み物も素晴らしいものです)

ありがとう

+2

データベースがSQL Serverの場合は、Windows認証を使用してパスワードを保存する必要はありません。 –

+0

@brianbeuning開発エリアはLinux、データベースはpostgresqlです。私たちは、データベースに接続するための設定ファイルをユーザに与え、パスワードを知らずにパスワードを使用したいと考えています。 – rahman

+2

安全な唯一の解決策は、プログラムを起動するたびにユーザーがパスワードを入力させることです。パスワードを暗号化した場合、プログラム内のキーをどこかに隠す必要があります。キーが見つかりますが、パスワードを取得するために必要な作業が増えます。 –

答えて

6

悪意のあるユーザーがこのパスワードを取得するのを防ぐことはできません。

しかし、二つの潜在的な解決策があります。

  1. データベースへの読み取り専用アクセス権を持っているプログラムに同梱されてユーザー名とパスワードは、

  2. プログラムはデータベースに直接接続しません。ユーザーにパスワードを与える必要なしに、実際のデータベースからこのデータをフェッチできるだけでなく、適切なセキュリティチェックを実行して、このユーザーが自分のデータなどにアクセスしていることを確認できるサーバーアプリケーションにデータを要求します。

+0

最初の解決策では、ユーザーがデータベースを表示することができますが、これはまさに私が望んでいないものです。 2番目の解決策は素晴らしく、私にとっては「あまりにも」完璧です。私はサーバーなどを必要としないはるかに単純なソリューションが必要です – rahman

+0

多分いくつかのテーブルへのアクセスを与える?それはあなたの特定の問題に大きく依存します。いずれにしても、プロジェクトが数日遅れても、2番目のソリューションを検討する必要があります。 – Havenard

+1

提案が必要な場合は、PHPを使用してこのようなものを迅速に実装できます。あなたのプログラムは必要なパラメータでPHPスクリプトにHTTPリクエストを行い、PHPは要求されたデータをXMLまたはJSON形式で返します。あなたのプログラムはそれを解析し、トリックが完了します。 – Havenard

-5

私たちはMD5を使用して、設定ファイルでパスワードを暗号化します。

+2

MD5は一方向ハッシュアルゴリズムです。パスワードをハッシュすると、*アプリケーションを含む*すべてで判読できなくなります。また、MD5は一般にセキュリティに関連するものにとっては貧しい選択であると考えられています。 –

4

設定ファイルでパスワードを暗号化するために使用される別の「ハードコードされた」パスワードを持つことができます。したがって、暗号化されたデータベースのパスワード(db_password)を設定ファイルに書き込んだ後、データベースにアクセスする必要があるときは、ハードコードされたパスワードでdb_passwordを復号化します。 もちろん、逆コンパイラを使ってパスワードを回復することは可能ですが、それは容易ではありません。

+0

あなたが考えるよりも実際には簡単です。 Wiresharkのような簡単なネットワークデバッグプログラムは、アプリケーションがデータベースに接続するときにネットワークトラフィックからこのパスワードを取得できます。世界中で最も洗練された暗号化を使用して、このパスワードをXMLファイルで保護することができます。ここでは違いはありません。 – Havenard

+0

@Havenard私はあなたの答えも読んだ。私はあなたの第二の解決策を見つけようとしていますが、私が過大評価していない限り、それは1-2日で簡単かつ実用的ではありません。 – rahman

+0

FreeNicknameあなたの解答は簡単です(ただし、解読可能です)。依然として私の要求に一時的に答えることができるかもしれません。私はそれを試してみましょうが、私は簡単な暗号化/復号化のためのリファレンスが必要です+ +。あなたはそれで私を助けることができますか? – rahman

関連する問題