Aracılığıyla paylaş


Bağlantı dizesi oluşturucuları

ADO.NET'in ilk sürümlerinde, bağlantı dizesi birleştirilmiş dize değerleriyle derleme zamanı denetimi gerçekleşmediğinden, çalışma zamanında yanlış bir anahtar sözcük bir ArgumentExceptionoluşturdu. .NET Framework veri sağlayıcılarının her biri bağlantı dizesi anahtar sözcükler için farklı söz dizimini desteklediğinden, el ile yapıldığında geçerli bağlantı dizesi oluşturma zorlaştı. Bu sorunu gidermek için, ADO.NET 2.0 her .NET Framework veri sağlayıcısı için yeni bağlantı dizesi oluşturucuları kullanıma sunulmuştur. Her veri sağlayıcısı, öğesinden DbConnectionStringBuilderdevralınan kesin türemiş bir bağlantı dizesi oluşturucu sınıfı içerir. Aşağıdaki tabloda .NET Framework veri sağlayıcıları ve ilişkili bağlantı dizesi oluşturucu sınıfları listelenmektedir.

Provider ConnectionStringBuilder sınıfı
System.Data.SqlClient System.Data.SqlClient.SqlConnectionStringBuilder
System.Data.OleDb System.Data.OleDb.OleDbConnectionStringBuilder
System.Data.Odbc System.Data.Odbc.OdbcConnectionStringBuilder
System.Data.OracleClient System.Data.OracleClient.OracleConnectionStringBuilder

Bağlantı dizesi ekleme saldırıları

Kullanıcı girişini temel alan bağlantı dizesi oluşturmak için dinamik dize birleştirme kullanıldığında bağlantı dizesi ekleme saldırısı oluşabilir. Dize doğrulanmamışsa ve kötü amaçlı metinler veya karakterler kaçmıyorsa, saldırgan hassas verilere veya sunucudaki diğer kaynaklara erişebilir. Örneğin, bir saldırgan noktalı virgül sağlayarak ve ek bir değer ekleyerek saldırıyı bağlayabilir. bağlantı dizesi bir "son kazanan" algoritması kullanılarak ayrıştırılır ve düşman girişi meşru bir değerle değiştirilir.

bağlantı dizesi oluşturucu sınıfları, tahmin çalışmalarını ortadan kaldırmak ve söz dizimi hatalarına ve güvenlik açıklarına karşı koruma sağlamak için tasarlanmıştır. Her veri sağlayıcısı tarafından izin verilen bilinen anahtar/değer çiftlerine karşılık gelen yöntemler ve özellikler sağlar. Her sınıf sabit bir eş anlamlılar koleksiyonu tutar ve eş anlamlıdan ilgili iyi bilinen anahtar adına çevirebilir. Geçerli anahtar/değer çiftleri için denetimler gerçekleştirilir ve geçersiz bir çift özel durum oluşturur. Ek olarak, eklenen değerler güvenli bir şekilde işlenir.

Aşağıdaki örnekte, ayar için eklenen ek değerin nasıl SqlConnectionStringBuilder işlendiği gösterilmektedir Initial Catalog .

Dim builder As New System.Data.SqlClient.SqlConnectionStringBuilder
builder("Data Source") = "(local)"
builder("Integrated Security") = True
builder("Initial Catalog") = "AdventureWorks;NewValue=Bad"
Console.WriteLine(builder.ConnectionString)
System.Data.SqlClient.SqlConnectionStringBuilder builder =
  new System.Data.SqlClient.SqlConnectionStringBuilder();
builder["Data Source"] = "(local)";
builder["integrated Security"] = true;
builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad";
Console.WriteLine(builder.ConnectionString);

Ö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.

Çıkışta, çift tırnak işareti içindeki ek değerden yeni bir anahtar/değer çifti olarak bağlantı dizesi eklemek yerine kaçarak bunu doğru şekilde işlediği gösterilirSqlConnectionStringBuilder.

data source=(local);Integrated Security=True;
initial catalog="AdventureWorks;NewValue=Bad"

Yapılandırma dosyalarından bağlantı dizesi oluşturma

bir bağlantı dizesi belirli öğeleri önceden biliniyorsa, bunlar bir yapılandırma dosyasında depolanabilir ve tam bir bağlantı dizesi oluşturmak için çalışma zamanında alınabilir. Örneğin, veritabanının adı önceden biliniyor olabilir, ancak sunucunun adı bilinmeyebilir.

bağlantı dizesi oluşturucusu için aşırı yüklenmiş oluşturuculardan biri bağımsız değişken olarak alır String ve bu da kullanıcı girişinden tamamlanabilecek kısmi bir bağlantı dizesi sağlamanıza olanak tanır. Kısmi bağlantı dizesi bir yapılandırma dosyasında depolanabilir ve çalışma zamanında alınabilir.

Not

Ad alanı, System.Configuration web uygulamaları ve Windows uygulamaları için kullanan WebConfigurationManager yapılandırma dosyalarına ConfigurationManager programlı erişim sağlar. bağlantı dizesi ve yapılandırma dosyalarıyla çalışma hakkında daha fazla bilgi için bkz. Bağlantı Dizeleri ve Yapılandırma Dosyaları.

Ayrıca bkz.