programing

web.config에서 하나의 항목을 암호화하는 방법

elecom 2023. 8. 1. 20:17
반응형

web.config에서 하나의 항목을 암호화하는 방법

ASP.NET 4

웹 팜에 있는 web.config의 연결 문자열에 RSA암호화를 사용했습니다.그러나 암호화할 사용자 지정 암호 항목이 하나 더 있습니다.나머지 구성을 암호화하지 않고 RSA 키로 암호화하는 방법조언 부탁드립니다. 감사합니다.

예:

  <appSettings>
        ...
    <add key="Host" value="www.foo.com" />
    <add key="Token" value="qwerqwre" />
    <add key="AccountId" value="123" />
    <add key="DepartmentId" value="456" />
    <add key="Password" value="asdfasdf" />
    <add key="SessionEmail" value="foo@foo.com" />
    <add key="DefaultFolder" value="789" />
  </appSettings>

암호를 별도의 섹션에 넣고 이 섹션만 암호화할 수 있습니다.예:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="secureAppSettings" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </configSections>

    <appSettings>
        <add key="Host" value="www.foo.com" />
        <add key="Token" value="qwerqwre" />
        <add key="AccountId" value="123" />
        <add key="DepartmentId" value="456" />
        <add key="SessionEmail" value="foo@foo.com" />
        <add key="DefaultFolder" value="789" />  
    </appSettings>

    <secureAppSettings>
        <add key="Password" value="asdfasdf" />
    </secureAppSettings>  
</configuration>

그런 다음 (예에서는 DPAPI를 사용하고 있으므로 RSA에 맞게 공급자를 조정합니다.)

aspnet_regiis -pef secureAppSettings . -prov DataProtectionConfigurationProvider

암호화된 파일은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="secureAppSettings" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </configSections>

    <appSettings>
        <add key="Host" value="www.foo.com" />
        <add key="Token" value="qwerqwre" />
        <add key="AccountId" value="123" />
        <add key="DepartmentId" value="456" />
        <add key="SessionEmail" value="foo@foo.com" />
        <add key="DefaultFolder" value="789" />  
    </appSettings>

    <secureAppSettings configProtectionProvider="DataProtectionConfigurationProvider">
        <EncryptedData>
            <CipherData>
                <CipherValue>AQAAANCMnd.......</CipherValue>
            </CipherData>
        </EncryptedData>
    </secureAppSettings>  
</configuration>

파일이 암호화된 후 응용프로그램에서 이러한 설정에 액세스하는 방법은 여전히 동일하고 완전히 투명합니다.

var host = ConfigurationManager.AppSettings["Host"];
var password = ConfigurationManager.AppSettings["Password"];

c# 및 .에서.Net 4.5 암호화된 설정을 읽기 위해 사용해야 했습니다.

string password = ((System.Collections.Specialized.NameValueCollection)ConfigurationManager.GetSection("secureAppSettings"))["Password"];

하지만 다른 방법으로는 효과가 있습니다.

단일 항목은 암호화할 수 없습니다. 인프라는 전체 구성 섹션의 암호화만 허용합니다.

한 가지 옵션은 항목을 자체 구성 섹션에 배치하고 암호화하는 것입니다.

언급URL : https://stackoverflow.com/questions/6224732/how-to-encrypt-one-entry-in-web-config

반응형