2009-03-06 41 views
16

Webアプリケーションの接続文字列をセキュリティの観点から管理する最も良い方法は何ですか?私はいくつかの異なる方法でそれをやりました。私はプレーンテキストweb.config設定キーとしてそれらを保存しました。また、各接続文字列の読み取り専用の文字列プロパティを持つConstantsクラスも作成しました。接続文字列のベストプラクティス

誰かが悪意を持って発見されてしまう心配がないような方法で接続文字列を管理するための推奨事項はありますか?私は間違いなく暗号化のために開いています。

答えて

3

あなたのweb.configファイルにencrypt your connection stringsと入力できます。

クラス内の接続文字列をプロパティまたは定数として格納することは安全ではありません。ディスアセンブラを使用する人は誰でもあなたの接続文字列を見ることができます。

最善の方法は暗号化の設定です。

+0

通常の文字列ではなくSecureStringを使用して、メモリダンプを公開しないようにすることもできます。 – Stimul8d

2

あなたは暗号化して、コマンドラインツールを使用して、あなたのweb.configファイルのセクションを解読することができますがます。aspnet_regiis:

暗号化: ます。aspnet_regiis -pef "のconnectionStrings" "C:\フォルダ\"

復号化: ます。aspnet_regiisの-pdf「のconnectionStrings」「C:\フォルダ\」

1

@vartec:それはない、かなり混乱状態...

あなたはそれが標準.Nを使用して暗号化する場合は、IISは確かに暗号化されたテキストを読むことができますET暗号化メカニズムで、UTF8またはUnicodeエンコーディングを壊さない。 Microsoftはこれをベストプラクティスとして推奨しています。あなたは、このことから、接続文字列を暗号化することでサンプルを見ることができます

:あなたは、サーバーを完全に制御を持っている場合は

http://msdn.microsoft.com/en-us/library/dx0f3cf2.aspx

2

「をどのようにデータソースを使用する場合のコントロールセキュアな接続文字列」接続文字列をMachine.Configに格納することもできます。これは、すべて同じDBサーバーで動作する多くのアプリケーションを使用すると便利です。

machine.configを表示するには、最初にサーバーにアクセスする必要があるため、暗号化する価値があるかどうかはわかりません。また、サーバーが侵害された場合、Encyrptionはハッカーが設定ファイルから資格情報を取得するのを止めません。

+0

攻撃者が独自の.aspxファイルをアプリケーションディレクトリにアップロードできない限り、誤ってweb.configの内容を公開するのを防ぎます。 – finnw

+0

同様の警告は、ユーザーのパスワードをハッシュする場合にも適用されます。漏洩したデータベースのバックアップからのみ保護されます。攻撃者がWebサーバーの制御権を取得すれば、両方とも役に立たなくなりますが、とにかく実行する価値があります。 – finnw

+0

私たちは異なるサーバー(dev、test、prod)で動作するので、適切な接続文字列が常にそれぞれに使用されます。非常にうまく動作します。 – spilliton