2012-04-22 2 views
2

그냥 어떤 제안 .. 닷넷 데스크톱 응용 프로그램에서 민감한 데이터 (FTP 계정, 데이터베이스를 ConnectionString 등)을 숨길 수있는 가장 좋은 방법하시기 바랍니다 것입니다 무엇을 물어보고 싶은 숨기기 나는 알고 있었다 응용 프로그램에 데이터를 넣고 응용 프로그램이 숨김 해제되거나 디 컴파일 될 경우 숨겨진 데이터가 노출된다는 것을 명심하십시오. 는 :)</p> <p>.. 중요 데이터

은 내가

Properties.Settings.Default.MyConnectionString = theConString; 

하지만 디 컴파일 할 때 여전히 데이터가 seend 할 수 있습니다 응용 프로그램 설정을 사용했습니다.

제안 사항을 알려주십시오.

+3

실제로 그렇게 할 수는 없습니다. 응용 프로그램이 데이터에 액세스 할 수 있으면이를 실행하는 사람도 데이터에 액세스 할 수 있습니다. 중요한 데이터를 숨기려면 응용 프로그램에 전혀 넣지 마십시오. – svick

+0

@ svick의 요점은 중요한 것입니다. 누가 당신을 보호하고 있습니까? 결정된 최종 사용자가 응용 프로그램을 볼 수 없도록 막으려는 경우 응용 프로그램에 전혀 저장할 수 없습니다. 즉 ** 최종 사용자의 PC에있는 권한이없는 사용자 (예 : 바이러스)가 바이러스를 읽지 못하도록하기 위해 ** 안전하게 저장하는 방법이 있습니다. –

답변

5

은 app.config 파일의 전체 또는 일부를 암호화 할 수 있습니다. 이것은 특히 데이터베이스 연결 문자열을 보호하는 데 일반적입니다.

여기에 대한 방법은 detailed article입니다. 간단히 말해 app.config의 연결 문자열 섹션을 암호화하는 코드는 다음과 같습니다.

static void ToggleConfigEncryption(string exeConfigName) 
{ 
    // Takes the executable file name without the 
    // .config extension. 
    try 
    { 
     // Open the configuration file and retrieve 
     // the connectionStrings section. 
     Configuration config = ConfigurationManager. 
      OpenExeConfiguration(exeConfigName); 

     ConnectionStringsSection section = 
      config.GetSection("connectionStrings") 
      as ConnectionStringsSection; 

     if (section.SectionInformation.IsProtected) 
     { 
      // Remove encryption. 
      section.SectionInformation.UnprotectSection(); 
     } 
     else 
     { 
      // Encrypt the section. 
      section.SectionInformation.ProtectSection(
       "DataProtectionConfigurationProvider"); 
     } 
     // Save the current configuration. 
     config.Save(); 

     Console.WriteLine("Protected={0}", 
      section.SectionInformation.IsProtected); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 
+0

좋아 .. 내가이 솔루션을 .. 보자 .. 감사 보스 .. :) –