Bağlantı bilgilerini koruma
Bir uygulamanın güvenliğini sağlamak için veri kaynağınıza erişimi korumak en önemli hedeflerden biridir. bağlantı dizesi, güvenlik altına alınmamışsa olası bir güvenlik açığı sunar. Bağlantı bilgilerini düz metin olarak depolama veya bellekte kalıcı hale getirirken sisteminizin tamamını tehlikeye atmış olur. Derlenmiş bir derlemede ortak ara dili (CIL) görüntülemek için kaynak kodunuzda katıştırılmış bağlantı dizeleri Ildasm.exe (IL Disassembler) kullanılarak okunabilir.
bağlantı dizesi içeren güvenlik açıkları, kullanılan kimlik doğrulaması türüne, bağlantı dizesi bellekte ve diskte nasıl kalıcı hale getirildiğinden ve bunları çalışma zamanında oluşturmak için kullanılan tekniklerden kaynaklanabilir.
Önemli
Microsoft, kullanılabilir en güvenli kimlik doğrulama akışını kullanmanızı önerir. Azure SQL'e bağlanıyorsanız önerilen kimlik doğrulama yöntemi Azure kaynakları için Yönetilen Kimlikler'dir.
Windows Kimlik Doğrulaması kullan
Veri kaynağınıza erişimi sınırlamaya yardımcı olmak için kullanıcı kimliği, parola ve veri kaynağı adı gibi bağlantı bilgilerinin güvenliğini sağlamalısınız. Kullanıcı bilgilerinin açığa çıkarılmasını önlemek için, şirket içi veri kaynakları için Windows kimlik doğrulaması (bazen tümleşik güvenlik olarak da adlandırılır) kullanmanızı öneririz. (Ancak, Azure SQL'e bağlanırkenAzure kaynakları için Yönetilen Kimlikler.) Windows kimlik doğrulaması, veya Trusted_Connection
anahtar sözcükleri kullanılarak Integrated Security
bir bağlantı dizesi belirtilir ve kullanıcı kimliği ve parola kullanma gereksinimi ortadan kaldırılır. Windows kimlik doğrulaması kullanılırken, kullanıcıların kimliği Windows tarafından doğrulanır ve Windows kullanıcılarına ve gruplarına izinler verilerek sunucu ve veritabanı kaynaklarına erişim belirlenir.
Windows kimlik doğrulamasını kullanmanın mümkün olmadığı durumlarda, kullanıcı kimlik bilgileri bağlantı dizesi kullanıma sunulduğundan fazladan bakım kullanmanız gerekir. ASP.NET bir uygulamada, bir Windows hesabını veritabanlarına ve diğer ağ kaynaklarına bağlanmak için kullanılan sabit bir kimlik olarak yapılandırabilirsiniz. Web.config dosyasındaki identity öğesinde kimliğe bürünme özelliğini etkinleştirir ve bir kullanıcı adı ve parola belirtirsiniz.
<identity impersonate="true"
userName="MyDomain\UserAccount"
password="*****" />
Sabit kimlik hesabı, veritabanında yalnızca gerekli izinler verilmiş düşük ayrıcalıklı bir hesap olmalıdır. Ayrıca, kullanıcı adı ve parolanın düz metinde gösterilmemesi için yapılandırma dosyasını şifrelemeniz gerekir.
Önemli
Microsoft, kullanılabilir en güvenli kimlik doğrulama akışını kullanmanızı önerir. Bu yordamda açıklanan kimlik doğrulama akışı, uygulamada çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca yönetilen kimlikler gibi diğer daha güvenli akışlar uygun olmadığında kullanmalısınız.
Evrensel Veri Bağlantısı (UDL) dosyalarını kullanmayın
Evrensel Veri Bağlantısı (UDL) dosyasında için OleDbConnection bağlantı dizesi depolamaktan kaçının. UDF'ler düz metinde depolanır ve şifrelenemez. UDL dosyası, uygulamanızın dış dosya tabanlı bir kaynağıdır ve .NET Framework kullanılarak güvenli hale getirilemez veya şifrelenemez.
Bağlantı Dizesi Oluşturucuları ile Ekleme Saldırılarından Kaçının
Kullanıcı girişine göre bağlantı dizesi oluşturmak için dinamik dize birleştirme kullanıldığında bağlantı dizesi ekleme saldırısı oluşabilir. Kullanıcı girişi doğrulanmazsa ve kötü amaçlı metin veya karakterlerden kaçılmazsa, saldırgan hassas verilere veya sunucudaki diğer kaynaklara erişebilir. Bu sorunu gidermek için ADO.NET 2.0, bağlantı dizesi söz dizimlerini doğrulamak ve ek parametrelerin kullanılmadığından emin olmak için yeni bağlantı dizesi oluşturucu sınıfları kullanıma sunulmuştur. Daha fazla bilgi için bkz . Bağlantı Dizesi Oluşturucuları.
Persist Security Info=False
komutunu kullanma
için Persist Security Info
varsayılan değer false'tur; tüm bağlantı dizesi bu varsayılan değeri kullanmanızı öneririz. ayarı Persist Security Info
true
veya yes
ayarı, kullanıcı kimliği ve parola dahil olmak üzere güvenlikle ilgili hassas bilgilerin açıldıktan sonra bir bağlantıdan alınmasına izin verir. Persist Security Info
veya no
olarak ayarlandığındafalse
, güvenilmeyen bir kaynağın güvenlik duyarlı bilgilere erişimi olmadığından emin olmak için güvenlik bilgileri bağlantıyı açmak için kullanıldıktan sonra atılır.
Yapılandırma Dosyalarını Şifreleme
Bağlantı dizesi yapılandırma dosyalarında da depolayabilirsiniz; bu da bunları uygulamanızın koduna ekleme gereksinimini ortadan kaldırır. Yapılandırma dosyaları, .NET Framework'ün ortak bir öğe kümesi tanımladığı standart XML dosyalarıdır. Yapılandırma dosyalarındaki bağlantı dizeleri genellikle bir Windows uygulaması için app.config dosyasındaki connectionStrings> öğesinde veya ASP.NET bir uygulamanın web.config dosyasında depolanır<. Yapılandırma dosyalarından bağlantı dizesi depolama, alma ve şifreleme ile ilgili temel bilgiler için bkz. Bağlantı Dizeleri ve Yapılandırma Dosyaları.