6

Entity Framework を使用して非ローカル サーバー上のデータベースにアクセスする場合、接続文字列 (web.config ファイルに格納されている) でユーザー名とパスワードのパラメーターをどのように指定すればよいですか?

C# のステップ バイ ステップ ガイド (John Sharp による 2010 年版) を読んで、リバース エンジニアリングの可能性や誰かがソース コードを入手した場合にアプリケーションにハード コードしないようにしました。ですから、そうするための従来のベストプラクティスを知りたいです。

4

4 に答える 4

7

ユーザーとパスワードをハード コーディングすることは、次の 3 つの理由で好ましくありません。

  • テキスト エディタでバイナリ ファイルを見ると何も理解できないため、セキュリティについて誤った印象を与えますが、実際には .NET アセンブリを逆アセンブルするのは簡単なことです。
  • すべてのソフトウェア開発者がユーザーとパスワードを知ることを強制します
  • これは、ユーザーとパスワードのペアを変更するには、アプリケーションの再コンパイルも含む新しいデプロイが必要であることを意味します

この問題に対する魔法のような解決策はありません。この場合のセキュリティは、セキュリティを担当する人々の規律と善意にかかっています。

私の会社では、次のようになります。

  • ソフトウェア開発者は本番データベースにアクセスできず、ユーザーとパスワードを知らないことは間違いありません。
  • ソフトウェア管理者はユーザー名とパスワードを持っており、運用web.configマシンにアプリケーションをデプロイするときに、開発部門からの情報を自分の秘密とマージします。
  • ソフトウェア管理者を除いて、他の人は本番マシンにアクセスできません

でユーザーとパスワードを暗号化するweb.configことは、非常に役立ちます。最終的には、暗号化キーを明確な形式でアプリケーションにハードコーディングする必要があり、逆アセンブルの問題に戻ります。

私の意見では、非常に優れた解決策は、私の会社で起こっていることと、明確なキーと難読化による暗号化を組み合わせることです。

一般的な考え方は次のとおりです。

  • アプリケーション管理者について私が言ったことを考えてみましょう
  • マイナーな詳細を 1 つ変更します。ユーザー名とパスワードは明確ではありませんが、暗号化されたフォームは知っています。
  • 暗号化されたユーザー名とパスワードを解読する鍵を持っているのは開発者だけであり、実行時にそれを使用します。
  • 開発者はアセンブリを難読化して、誰もがバイナリをリバース エンジニアリングし、クリア キーを見つけ、アプリケーション管理者に暗号化されたユーザー名とパスワードが何であるかを尋ねる価値がないようにする必要があります (外出中にクマを飲みながら)そして、すべてをまとめます

つまり、誰か (おそらく会社の所有者またはその他の責任者) が「greasemonkey」アプリを使用してユーザー名とパスワードを暗号化し、その結果の暗号化をアプリケーション管理者に提供する必要があります。

最初に所有者に資格情報の最初のペアを与えたデータベース管理者がいることも忘れないでください。所有者はパスワードを変更してから、私が設定したすべてのことを行う必要があります。

結論として、多くの解決策があり、いくつかは他より奇抜です。それはツールやコードだけでなく、規律にもあります。

于 2013-09-17T12:32:32.880 に答える
2

web.config のセクションを暗号化できます。MSDN でこのチュートリアルを参照してください: http://msdn.microsoft.com/library/dtkwfdky.aspx従うのは非常に簡単です。

于 2013-09-17T12:20:49.177 に答える
1

次のコードで試すことができます。

ConnectionStringsSection oSection = Configuration.ServiceConfiguration.GetConnectionStrings();
    if(!oSection.SectionInformation.IsLocked && !oSection.SectionInformation.IsProtected)
    {
        oSection.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider"); 
        oSection.CurrentConfiguration.Save();
    }

編集:

保護された構成の詳細については、MSDN リンク ( http://msdn.microsoft.com/en-us/library/53tyfkaw.aspx ) から入手できます 。

于 2013-09-17T12:20:10.760 に答える