Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Güvenli ADO.NET kodu yazmak için, temel alınan veri deposunda veya veritabanında kullanılabilen güvenlik mekanizmalarını anlamanız gerekir. Ayrıca, uygulamanızın içerebileceği diğer özelliklerin veya bileşenlerin güvenlik etkilerini de göz önünde bulundurmanız gerekir.
Kimlik Doğrulaması, Yetkilendirme ve İzinler
Microsoft SQL Server'a bağlanırken, kullanıcı kimliği ve parola geçirmek yerine geçerli etkin Windows kullanıcısının kimliğini kullanan Tümleşik Güvenlik olarak da bilinen Windows Kimlik Doğrulaması'nı kullanabilirsiniz. Kullanıcı kimlik bilgileri bağlantı dizesi gösterilmediğinden şirket içi veritabanları için Windows Kimlik Doğrulaması kullanılması önerilir. SQL Server'a bağlanmak için Windows Kimlik Doğrulaması'nı kullanamıyorsanız, çalışma zamanında SqlConnectionStringBuilder kullanarak bağlantı dizeleri oluşturmayı düşünün.
Ö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.
Kimlik doğrulaması için kullanılan kimlik bilgilerinin uygulama türüne göre farklı şekilde işlenmesi gerekir. Örneğin, bir Windows Forms uygulamasında, kullanıcıdan kimlik doğrulama bilgilerini sağlaması istenebilir veya kullanıcının Windows kimlik bilgileri kullanılabilir. Ancak, bir Web uygulaması genellikle kullanıcı tarafından değil uygulamanın kendisi tarafından sağlanan kimlik bilgilerini kullanarak verilere erişir.
Kullanıcıların kimliği doğrulandıktan sonra, eylemlerinin kapsamı kendilerine verilen izinlere bağlıdır. Her zaman en az ayrıcalık ilkesini izleyin ve yalnızca kesinlikle gerekli izinleri verin.
Daha fazla bilgi için aşağıdaki kaynaklara bakın.
| Kaynak | Açıklama |
|---|---|
| Bağlantı Bilgilerini Koruma | bağlantı dizesi şifrelemek için korumalı yapılandırma kullanma gibi bağlantı bilgilerini korumaya yönelik en iyi güvenlik yöntemlerini ve tekniklerini açıklar. |
| Bağlantı Dizesi Oluşturucular | Çalışma zamanında kullanıcı girişinden bağlantı dizeleri oluşturmayı açıklar. |
| SQL Server Veritabanı Altyapısı ve Azure SQL Veritabanı için güvenlik | SQL Server Veritabanı Altyapısı ve Azure SQL Veritabanı güvenlik ve koruma hakkındaki bilgileri bulmanıza yardımcı olacak bağlantılar sağlar. |
Parametreli Komutlar ve SQL Ekleme
Parametreli komutların kullanılması SQL ekleme saldırılarına karşı korunmaya yardımcı olur. Bu saldırıda bir saldırgan, sunucudaki güvenliği tehlikeye atan bir SQL deyimine "komut ekler". Parametreli komutlar, dış kaynaktan alınan değerlerin Transact-SQL deyiminin parçası değil yalnızca değer olarak geçirildiğinden emin olarak SQL ekleme saldırısına karşı korur. Sonuç olarak, bir değere eklenen Transact-SQL komutları veri kaynağında yürütülür. Bunun yerine, bunlar yalnızca parametre değeri olarak değerlendirilir. Güvenlik avantajlarına ek olarak, parametreli komutlar Transact-SQL deyimiyle veya saklı yordamla geçirilen değerleri düzenlemek için kullanışlı bir yöntem sağlar.
Parametreli komutları kullanma hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın.
| Kaynak | Açıklama |
|---|---|
| DataAdapter Parametreleri | ile parametrelerin DataAdapternasıl kullanılacağını açıklar. |
| Saklı Yordamlarla Verileri Değiştirme | Parametrelerin nasıl belirtileceğini ve dönüş değerinin nasıl alınacağını açıklar. |
| Saklı yordamlar (Veritabanı Altyapısı) | Saklı yordamları ve farklı saklı yordam türlerini kullanmanın avantajlarını açıklar. |
Yoklama Saldırıları
Saldırganlar, sisteminize bir saldırıyı bağlamak için genellikle sunucunuzun, veritabanınızın veya tablonuzun adı gibi bir özel durumdan alınan bilgileri kullanır. Özel durumlar uygulamanız veya veri kaynağınız hakkında belirli bilgiler içerebileceğinden, yalnızca temel bilgileri istemciye sunarak uygulamanızın ve veri kaynağınızın daha iyi korunmasına yardımcı olabilirsiniz.
Daha fazla bilgi için aşağıdaki kaynaklara bakın.
| Kaynak | Açıklama |
|---|---|
| .NET'te özel durumları işleme ve oluşturma | Try/catch/finally yapılandırılmış özel durum işlemenin temel biçimlerini açıklar. |
| Özel Durumlar için En İyi Yöntemler | Özel durumları işlemek için en iyi yöntemleri açıklar. |
Microsoft Access ve Excel Veri Kaynaklarını Koruma
Microsoft Access ve Microsoft Excel, güvenlik gereksinimleri çok az olduğunda veya yok olduğunda ADO.NET bir uygulama için veri deposu işlevi görebilir. Güvenlik özellikleri caydırıcılık için etkilidir, ancak bilgisiz kullanıcılar tarafından karıştırılmamasından daha fazlasını yapmaya güvenilmemelidir. Access ve Excel için fiziksel veri dosyaları dosya sisteminde bulunur ve tüm kullanıcılar tarafından erişilebilir olmalıdır. Bu, dosyalar kolayca kopyalanabilir veya değiştirilebildiği için hırsızlık veya veri kaybına neden olabilecek saldırılara karşı savunmasız olmalarını sağlar. Sağlam güvenlik gerektiğinde, SQL Server'ı veya fiziksel veri dosyalarının dosya sisteminden okunamayan sunucu tabanlı başka bir veritabanını kullanın.
Kurumsal Hizmetler
COM+, Windows hesaplarına ve işlem/iş parçacığı kimliğine bürünme özelliğine dayalı kendi güvenlik modelini içerir. Ad alanı, System.EnterpriseServices .NET uygulamalarının yönetilen kodu com+ güvenlik hizmetleriyle sınıfı aracılığıyla tümleştirmesine ServicedComponent olanak sağlayan sarmalayıcılar sağlar.
Yönetilmeyen Kodla Birlikte Çalışma
.NET Framework, COM bileşenleri, COM+ hizmetleri, dış tür kitaplıkları ve birçok işletim sistemi hizmeti dahil olmak üzere yönetilmeyen kodla etkileşim sağlar. Yönetilmeyen kodla çalışmak, yönetilen kod için güvenlik çevresinin dışına çıkmayı içerir. Hem kodunuzun hem de onu çağıran tüm kodların yönetilmeyen kod iznine (SecurityPermission belirtilen bayrakla) UnmanagedCode sahip olması gerekir. Yönetilmeyen kod, uygulamanızda istenmeyen güvenlik açıkları oluşturabilir. Bu nedenle, kesinlikle gerekli olmadıkça yönetilmeyen kodla birlikte çalışmaktan kaçınmanız gerekir.
Daha fazla bilgi için bkz . Yönetilmeyen Kodla Birlikte Çalışma.