49

app.configで接続文字列を暗号化するのに問題があります。app.configのconnectionStringsセクションを保護するコードがありますが、パスワードはプレーンテキストで表示されます。

接続文字列を暗号化して、展開時にプレーンテキストにならないようにする必要があります。web.configのSOにも同様の質問がありますが、app.configにはありません。

4

6 に答える 6

61

app.configの名前をweb.configに変更し、aspnet_regiisツールで暗号化してから、名前をapp.configに戻すだけで、web.configと同じソリューションを簡単に適用できます。

  1. app.configの名前をweb.configに変更します
  2. コマンドプロンプトを開き、次のように入力します:(
    %windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" c:\<folder containing your web.config> フォルダレベルで停止し、末尾に「」を付けないでください)
  3. web.configの名前をapp.configに戻します

メモ帳で開いて、暗号化されたファイルを表示できます。Visual Studioでは、復号化されていることがわかります。接続文字列は、暗号化されていない場合と同じように使用できます。(暗号化されたのと同じマシンでのみ復号化できることに注意してください。)

于 2015-03-21T00:11:31.283 に答える
25

この記事を見てください。いくつかの非常に役立つ例があります。あなたは基本的にSystem.Configuration.SectionInformation.ProtectSectionここであなたを助けるために探しています。

保護された構成の実装もご覧ください

于 2012-07-24T18:52:02.323 に答える
4

•名前の変更App.config file to web.config<br> •管理者としてコマンドプロンプトを実行します。

暗号化の場合:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings"引用符で囲まれたプロジェクトの場所と-prov "DataProtectionConfigurationProvider"

元:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "D:\location\location1\location" -prov "DataProtectionConfigurationProvider" 

復号化の場合:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings"引用符で囲まれたプロジェクトの場所。

元:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "D:\location1\location" 

エラーの場合:

これを構成に追加しますxmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"

このような:

ここに画像の説明を入力してください

•最後に、名前をに変更web.configしますApp.Config

于 2018-10-11T13:39:53.343 に答える
3

configファイルの場所を定義する

Configuration config  = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

暗号化したい場合 connectionStrings

config.ConnectionStrings.SectionInformation.ProtectSection(Nothing);

アプリの設定部分に注意する必要があります

したがって、暗号化する場合AppSettings

config.AppSettings.SectionInformation.ProtectSection(Nothing);

ここに画像の説明を入力してください

于 2016-12-11T05:30:16.747 に答える
3

さらに、 Webファームで接続文字列を暗号化および復号化したい人がいる場合は、次の手順を実行します。

  1. RSAキーを作成します。 aspnet_regiis -pc "MyKeys" -exp

  2. このキーへのアプリケーションプールIDへのアクセスを許可します。 aspnet_regiis -pa "MyKeys" "IIS AppPool\ApplicationPoolName" -full

  3. RSAプロバイダーをweb.configに追加します。

    <configuration>
        <configProtectedData>
            <providers>
                <add name="MyProvider" 
                     type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 
                     keyContainerName="MyKeys" 
                     useMachineContainer="true" />
            </providers>
        </configProtectedData>
    </configuration>
    
  4. RSAプロバイダーを使用してweb.configを暗号化します。 aspnet_regiis -pe "connectionStrings" -app "/MyApplication" -prov "MyProvider" 注:単一サーバーのシナリオで行ったような代替構文を使用できます。例: ASPNET_REGIIS -pef "connectionStrings" "D:\inetpub\wwwroot\applicationFolder" -prov "MyProvider"

  5. web.configを開き、接続文字列が暗号化されていることを確認します

  6. サイトをテストして、機能していることを確認します

  7. web.configを復号化してみてください。以下のコードを含むtest.aspxファイルを作成します。復号化されたファイルを表示するには、それを参照してください

  8. RSAキーをCドライブにエクスポートします。 aspnet_regiis -px "MyKeys" "c:\keys.xml" -pri

  9. このファイルをWebファームの2番目のサーバーにコピーします

  10. そのサーバーにインポートします。 aspnet_regiis -pi "MyKeys" "c:\keys.xml"

  11. このキーへのアクセスを許可します(ステップ2と同じ)

  12. 2番目のサーバーでアプリケーションをテストします

出典:接続文字列を暗号化および復号化する方法

于 2019-07-26T20:23:12.077 に答える
2

これを自動化する方法:

ProjectSettings>コンパイル>BuildEvents>ビルド後の編集

以下のコードを貼り付けます。

SET ApplicationName=YourAppWithoutExtention
echo.
echo POST BUILD ACTIONS
echo ====================

if EXIST web.config (
    echo Deleting web.config
    DEL web.config
)

echo Renaming %ApplicationName%.exe.config to web.config
REN %ApplicationName%.exe.config web.config

echo Running aspnet_regis against webconfig
SET rpath=%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" "$(TargetDir)
SET rpath=%rpath:~0,-1%"
echo Path: %rpath%
%rpath%

echo Renaming web.config to %ApplicationName%.exe.config 
REN web.config %ApplicationName%.exe.config

echo Done.

「YourAppWithoutExtention」をアプリ名に置き換えます。

その後、ビルドするたびに、app.configが自動的に暗号化されます。

于 2019-01-06T13:41:49.607 に答える