■ .Net 기반 프로그램 개발 시 접속정보를 App.config 파일에 저장한 경우
- App.config에 DB접속정보나 기타 정보를 저장하여 사용하는 경우 프로그램명.exe.config 파일에 접속정보가
저장되는데 메모패드로 열어보는 경우 간단히 확인되므로 보안상으로 취약하며 외부로 노출 될 수 있기때문에
Conifg 파일을 암호하 하는 방법을 찾아보았습니다.
1. Code Project에서 원본 코드를 다운로드하여 확인 할 수 있습니다.
2. 사용방법
2-1 참조주소로 설정한 Code 프로젝트 사이트에 접속 후 로그인하여 소스 다운로드
2-2 프로그램을 실행하면 아래와 같은 프로그램이 실행됨.
2-3 .. 버튼을 클릭하여 .Net Executables 파일을 열기
2-4 Encrypt 버튼 클릭
2. 소스코드
- 지정된 경로의 파일을 열어서 암호화
public static void EncryptConnectionString(bool encrypt,string fileName)
{
Configuration configuration = null;
try
{
// Open the configuration file and retrieve the connectionStrings section.
configuration = ConfigurationManager.OpenExeConfiguration(fileName);
ConnectionStringsSection configSection =
configuration.GetSection("connectionStrings") as ConnectionStringsSection;
if ((!(configSection.ElementInformation.IsLocked)) &&
(!(configSection.SectionInformation.IsLocked)))
{
if (encrypt && !configSection.SectionInformation.IsProtected)
{
//this line will encrypt the file
configSection.SectionInformation.ProtectSection
("DataProtectionConfigurationProvider");
}
if (!encrypt &&
configSection.SectionInformation.IsProtected)//encrypt is true so encrypt
{
//this line will decrypt the file.
configSection.SectionInformation.UnprotectSection();
}
//re-save the configuration file section
configSection.SectionInformation.ForceSave = true;
// Save the current configuration
configuration.Save();
Process.Start("notepad.exe", configuration.FilePath);
//configFile.FilePath
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
- 암호화 전 후 App.config 파일
-- 암호화 전
<connectionStrings>
<add name="SecurePassDataBase" connectionString="Data Source=D-6058;
Initial Catalog=DEMO_Test;User ID=sysdba;Password=xxxxxx" />
</connectionStrings>
-- 암호화 후
<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAATeylFe/
xsUiVdcZvovEYDwQAAAACAAAAAAADZgAAwAAAABAAAABZsoaKP62hL85wpS+O3+
znAAAAAASAAACgAAAAEAAAAHZ5NcKcDcWuEVDKyU4mz7J4AQAAAILD3fmIimyY2rkEkAdAtRn0dh9tI7+
Y5+ILciikoSd/y2myUS88vJ59pIf82vOLk/0UwKL8TnHEaFTeX7SJ5par6pW7Pyhu4kKTEMyMUQsZX/
h8RjNOnt+Q/kZIdqF2YWxFUP0RF3GWirvMNWS3do7IE0WaJ1W3wL+HhalglmKURWIGHsvJlybl+
EGI8crPnli0W/yMN+fR0P/ndaTY87kR4+0gvKDWzZ/dMh8E7ZtodFzTQ4pjpl5YyRHH/
Tc3oFUtimCnzXvCVT4ykK6NEQfPiPc5KJW6ajTEEGOrAXTnr9HF2wCRekE3WUVPYkeHRTjtuf
2hUyvYx4eoGeOIAzFFXxY1GzZqhl8YaHlukZagiTVbfXA6Wh+K0dsAiOPz+wbCT92/
blgsdkoKSMy8vRqFxAhX8HoW6KbJhsBPOvv36iBr1RecCpzUxWrVssS+wi/JclVfVs0nYb/
pFidcJwhuwBsS6IzvV1tgrk8F9CUor+6DYHd/ABQAAABZjFi30hPRmKj+pvxFzjeNH+
Dhhg==</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
- 암호화된 정보를 불러오는 코드
string connectionString = ConfigurationManager.ConnectionStrings["SecurePassDataBase"].ToString();
- 참조주소
'C# > .Net - Windows Form' 카테고리의 다른 글
00 C# 윈도우 폼 프로그램 관리자 권한으로 실행하기 (0) | 2019.12.02 |
---|