COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
55/ 65

Veri erişimi güvenliği

SQL injection ve en az yetki

Güvenlik, tek bir komuttan ibaret değildir.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

SQL injection güvenilmeyen verinin SQL kodu haline gelmesidir. Uygulamada parametreli sorgular veya güvenli ORM bağlaması kullan; string interpolation ile WHERE üretme. Parametreler değerleri bağlar, izin ve iş kuralı doğrulamasını yerine getirmez. Sıralama ve tablo seçimi gibi tanımlayıcılar sabit izin listelerinden gelmelidir.

Uygulama hesabına sysadmin veya db_owner verme. İhtiyaç duyduğu nesne ve işlem yetkilerini role bağla. Kimlik bilgilerini kod deposunda saklama; secret yönetimi ve rotasyon uygula. Şifreleme aktarım ve depolama için farklı kontroller gerektirir; maskeleme erişim kontrolü değildir. Loglara kişisel bilgi veya secret yazma. Bu ders izinleri görüntüler; kullanıcı veya login oluşturarak gerçek sunucu güvenliğini değiştirmez.

NERESİNDE KULLANIRSIN?

Veri erişiminin etki alanını sınırlandırmak için.

SIK YAPILAN HATA

Giriş doğrulamasının parametre bağlamaya alternatif olduğunu sanmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
SELECT ORIGINAL_LOGIN() AS LoginName, USER_NAME() AS DatabaseUser;

Bağlantının kimlik bağlamını gösterir.

Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.

02 / SIRA SENDE

Önce kendin dene.

SalesOrder için mevcut izinlerini listele.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT permission_name FROM sys.fn_my_permissions(N'lab.SalesOrder', N'OBJECT');

Yetki listesi güvenlik denetiminin başlangıcıdır; kapsamlı denetimin yerine geçmez.