私が知りたいのは、設定ファイルの接続文字列を暗号化する明確なアプローチです。ここに私の質問は以下のとおりです。マシンレベルの暗号化を使用して.Net暗号化
、私のサーバーにアクセスする誰もが接続文字列の内容を読み取るために少しの.Netプログラムを書き込むことはできませんか?
エンタープライズ環境のユーザーマシンにアプリケーションをデプロイする場合、アプリケーションに構成ファイル内の接続文字列がある場合、アプリケーションでのみそのファイルを復号化できることを確認するにはどうすればよいですか?このシナリオは、ClickOnceの展開シナリオで特に興味深いものです。私は、パブリッシャーサーバーで暗号化されていない設定を保存し、アプリがダウンロードされ、インストールされ、初めて実行されたときにマシンレベルで暗号化する人について読んできました。これは私には間違って聞こえる - 接続文字列がワイヤで保護されず、ダウンロードとアプリケーションの実行の間に短時間の間保護されていない状態になります。
私は公開鍵と秘密鍵を持ち、自分のアプリケーションに署名し、設定ファイルを鍵で暗号化できますか?ユーザーがそれを実行すると、署名されたアプリケーションからのみ復号化が可能ですか?
私はClickOnceを使用しているので、バージョン番号が変更されない限り、ClickOnceは変更を検出しないため、暗号化された機密情報をコードに埋め込むことができます。したがって、接続文字列を変更すると再コンパイルする必要がある場合、app.configのポイントはミュートされます。サーバー、クライアント、およびその間の接続文字列の保護を実現するために、設定ファイルを使用して外部からどのようなアプローチを取ることができますか?
あなたの第1の質問をより深く記述できますか? 「マシンレベル」の暗号化とは何ですか? – nightcoder
あなたが知っている限り、あなたは組み込みの暗号化を使ってマシンレベルとユーザーレベルで暗号化することができます。例えば、configSection.SectionInformation.ProtectSection( "RSAProtectedConfigurationProvider")を用いて、 またはAspnet_regiis.exeに –
を通しておそらくそれはよりも昨日(http://stackoverflow.com/questions/890396/click-once-how-to-encrypt-connection-strings)尋ねたあなたの前の質問に詳しく説明する方が理にかなって異なった言葉で二重の質問を作成する。 – Pwninstein