2010-01-29 13 views
16

Bir sql 2005 sunucusuna bağlanan bir C# uygulaması (asp web sayfası değil) oluşturdum. Kaynak kodumda, bu sql sunucusunun parolası ve kullanıcı kimliği, ConnectionString'de düz metin olarak kodlanır. Benim aracı sökmek diğer halklar şifreyi görmek mümkün olmadığını SQL linkstring şifrelemek C#

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

şifre veya tüm connectionstring şifrelemek için kolay bir yol var mı

?

sayesinde

cevap

0

app.config dosyasında, web.config ile aynı şekilde encrypt sections yapabilirsiniz. MS buna Protected Configuration diyor. Hem şifreli veri hem de anahtar aynı makinede bulunduğu için, onu daha da zorlaştırır, ancak teoride veriye ulaşmak imkansız değildir.

1

Hayır, sadece yapabilirsiniz o

uygulama sadece gerekli tablolar/prosedürlerine erişimi var özel veritabanı giriş kullanmak izin vermek daha iyidir zor.

4

bunu yapmanın iki yolu vardır:

1) şifrelemek ve kaynak kodundan bağlantı strimng şifresini Yapılandırma Güvenli Bölüm kullanabilirsiniz:

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) Şunları yapabilirsiniz Enterprise Library Veri Erişim RSAProtectedConfigurationProvider veya DPAPIProtectedConfigurationProvider kullanarak şifreleme gerçekleştirmek için Uygulama Bloğu.

tam articvle için gitmek ->http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx

+1

Teşekkürler, ama bunu nasıl uygulayacağımı bilmiyorum. Sadece C# projemden oluşturulmuş bir dllim var - exe yok ve app.config yok mu? Ayrıca bu dll farklı bilgisayarlarda ve kullanıcılarda kullanılmalıdır! – Tobi

+0

Tek yol, bir XML dosyası oluşturabilir ve ayarlarınızı bunun içinde saklayabilirsiniz. Daha sonra bu XML'i, her bir dağıtıcı makinede belirli bir konumda tutabilirsiniz ve daha sonra okuyabilirsiniz. En iyi tekniklerden biri, özel bir yapılandırma sihirbazını kullanmaktır; yani, yapılandırma öğelerinizi yöneten farklı bir sınıf kitaplığı ve ana DLL dosyasının referansı bu bağlantıya ya da Enterprise Library'de bulunan Congfiguration Block'u kullanabilir. – Bhaskar

-3

da yerine yapılandırma dosyasında saklamak Sicil kullanıcı adını ve şifreyi saklayabilir. Veritabanına bağlanmaya çalışırken kullanıcı adı ve parola kayıt defterinden okuyun. Kayıt Defterinde saklanırken Kullanıcı Adını ve Şifreyi Şifrele ve Kayıt Defterinden Alınırken Kullanıcı Adını ve Şifresini Çözmeniz gerektiğini unutmayın.

+1

Düz metin bilgilerinin kayıt defterinde saklanması bir yapılandırma dosyasından çok farklı değil. Bu daha fazla bir güvenlik duygusunu sadece önleme yaptığınız tehdidi dikkate aldığınızda. Bu dosyaya zaten erişimleri varsa, büyük olasılıkla bu kayıt defteri anahtarına erişimleri vardır. Ne aradıklarını biliyorlar. –

+0

fakat OP açıkça belirtmekle birlikte 'Kullanıcı adı ve şifreyi şifrelemek zorundasınız' –

+0

Uygulama yapılandırma dosyaları (app.config ve web.config) bu tür bilgileri içerecek şekilde özel olarak oluşturulmuştur. Bu nedenle Windows Kayıt Defteri'ni kullanarak kullanıcı/parola, bağlantı dizeleri ve diğer tüm uygulama ayarlarını bu dosyalarla yönetmek çok daha etkili ve daha basittir. Özellikle ASP.NET uygulamaları ile bir sunucu ortamında. –

İlgili konular