복붙노트

[SQL] 암호화 SQL ConnectionString을 C #

SQL

암호화 SQL ConnectionString을 C #

나는 SQL 2005 서버에 연결 (하지 웹 페이지 ASP)는 C # 응용 프로그램을 만들었습니다. 내 소스 코드에서이 SQL 서버에 대한 암호 및 사용자 ID는 ConnectionString에 일반 텍스트를 코드화된다.

SqlConnection con = new SqlConnection();
con.ConnectionString = 
         "Data Source=server1;"+
         "Initial Catalog=mydatabase;"+
         "Integrated Security=no;"+
         "User ID=admin;Password=mypassword;";
con.Open();

암호화 암호 또는 전체를 ConnectionString에 쉬운 방법은 내 도구를 분해 다른 사람이 암호를 볼 수없는 것이 있나요?

감사

해결법

  1. ==============================

    1.당신은 설정 파일에 연결 문자열을 저장하고 해당 섹션을 암호화한다. http://www.4guysfromrolla.com/articles/021506-1.aspx 또는 http://msdn.microsoft.com/en-us/library/89211k9b%28VS.80%29.aspx 참조하십시오.

    당신은 설정 파일에 연결 문자열을 저장하고 해당 섹션을 암호화한다. http://www.4guysfromrolla.com/articles/021506-1.aspx 또는 http://msdn.microsoft.com/en-us/library/89211k9b%28VS.80%29.aspx 참조하십시오.

  2. ==============================

    2.그것을하는 두 가지 방법이 있습니다 :

    그것을하는 두 가지 방법이 있습니다 :

    1) 당신은 구성 소스 코드에서 암호화 및 해독 연결 문자열 섹션을 고정 사용할 수 있습니다 :

    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);
        }
    

    2) 당신은 엔터프라이즈 라이브러리 데이터 액세스 응용 프로그램 블록 RSAProtectedConfigurationProvider 또는 DPAPIProtectedConfigurationProvider를 사용하여 암호화를 수행 할 수 있습니다.

    > http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx - 전체 articvle 사이트로 이동

  3. ==============================

    3.아니, 당신은 단지 그것을 어렵게 만들 수 있습니다

    아니, 당신은 단지 그것을 어렵게 만들 수 있습니다

    이 응용 프로그램은 필요한 테이블 / 절차에 액세스 할 수있어 특별한 데이터베이스 로그인을 사용할 수 있도록하는 것이 좋습니다.

  4. ==============================

    4.당신의 Web.config 같은 방법으로의 app.config 섹션을 암호화 할 수 있습니다. MS는 구성을 보호 호출합니다. enrypted 데이터에만 어렵게 만드는 동일한 시스템에서 키 상주하지만 이론적으로는 모두 불가능하기 때문에하면 데이터를 얻을 수 있습니다.

    당신의 Web.config 같은 방법으로의 app.config 섹션을 암호화 할 수 있습니다. MS는 구성을 보호 호출합니다. enrypted 데이터에만 어렵게 만드는 동일한 시스템에서 키 상주하지만 이론적으로는 모두 불가능하기 때문에하면 데이터를 얻을 수 있습니다.

  5. ==============================

    5.당신은 또한 대신 설정 파일에 저장하는 레지스트리에서 사용자 이름과 암호를 저장할 수 있습니다. 데이터베이스에 연결하려고 할 때 레지스트리에서 사용자 이름과 암호를 읽어보십시오. 레지스트리에서 검색하는 동안 당신은 레지스트리 및 암호 해독 사용자 이름에 저장하는 동안 사용자 이름을 암호화 및 암호해야 및 암호를 기억하십시오.

    당신은 또한 대신 설정 파일에 저장하는 레지스트리에서 사용자 이름과 암호를 저장할 수 있습니다. 데이터베이스에 연결하려고 할 때 레지스트리에서 사용자 이름과 암호를 읽어보십시오. 레지스트리에서 검색하는 동안 당신은 레지스트리 및 암호 해독 사용자 이름에 저장하는 동안 사용자 이름을 암호화 및 암호해야 및 암호를 기억하십시오.

  6. from https://stackoverflow.com/questions/2160515/encrypt-sql-connectionstring-c-sharp by cc-by-sa and MIT license