Aracılığıyla paylaş


LINQ to SQL'de güvenlik

Bir veritabanına bağlandığınızda güvenlik riskleri her zaman vardır. LINQ to SQL, SQL Server'daki verilerle çalışmanın bazı yeni yollarını içerse de ek güvenlik mekanizması sağlamaz.

Erişim Denetimi ve Kimlik Doğrulaması

LINQ to SQL'in kendi kullanıcı modeli veya kimlik doğrulama mekanizmaları yoktur. Nesne modelinize eşlenen veritabanına, veritabanı tablolarına, görünümlerine ve saklı yordamlara erişimi denetlemek için SQL Server Güvenliği'ni kullanın. Kullanıcılara en az gerekli erişimi verin ve kullanıcı kimlik doğrulaması için güçlü parolalar gerekli kılın.

Eşleme ve Şema Bilgileri

nesne modelinizdeki veya dış eşleme dosyanızdaki SQL-CLR tür eşlemesi ve veritabanı şeması bilgileri, dosya sistemindeki bu dosyalara erişimi olan herkes için kullanılabilir. Şema bilgilerinin nesne modeline veya dış eşleme dosyasına erişebilen herkes tarafından kullanılabilir olacağını varsayalım. Şema bilgilerine daha yaygın erişimi önlemek için, kaynak dosyaların ve eşleme dosyalarının güvenliğini sağlamak için dosya güvenlik mekanizmalarını kullanın.

Bağlantı Dizeleri

Mümkün olduğunda bağlantı dizelerinde parola kullanmaktan kaçınılmalıdır. Bağlantı dizesi kendi başına bir güvenlik riski olmakla kalmaz, Nesne İlişkisel Tasarımcısı veya SQLMetal komut satırı aracı kullanılırken bağlantı dizesi nesne modeline veya dış eşleme dosyasına düz metin olarak da eklenebilir. Dosya sistemi aracılığıyla nesne modeline veya dış eşleme dosyasına erişimi olan herkes bağlantı parolasını görebilir (bağlantı dizesine dahil edilmişse).

Bu tür riskleri en aza indirmek için tümleşik güvenliği kullanarak SQL Server ile güvenilir bir bağlantı sağlayın. Bu yaklaşımı kullanarak, bağlantı dizesinde parola depolamanız gerekmez. Daha fazla bilgi için bkz. SQL Server Güvenliği.

Tümleşik güvenlik olmadığında, bağlantı dizesinde net metin parolası gerekir. Bağlantı dizenizin güvenliğini sağlamanın en iyi yolu, artan risk sırasına göre aşağıdaki gibidir:

  • Tümleşik güvenliği kullanın.

  • Parolalarla bağlantı dizelerinin güvenliğini sağlayın ve bağlantı dizeleri arasında geçişi en aza indirin.

  • System.Data.SqlClient.SqlConnection Maruz kalma süresini sınırladığından bağlantı dizesi yerine bir sınıf kullanın. LINQ to SQL System.Data.Linq.DataContext sınıfı bir SqlConnection kullanılarak örneklendirilebilir.

  • Tüm bağlantı dizeleri için yaşam sürelerini ve erişim noktalarını en aza indirin.

Ayrıca bakınız