Gereksinimler: Proje, veritabanını eklemek, silmek, değiştirmek ve kontrol etmek için EF ORM çerçevesini kullanır, ancak karmaşık sorgular karşısında daha iyi sorgular için Linq ve Lambda kullanmak mümkün olmayabilir, bu yüzden sorgulama için yerel SQL ifadelerini çalıştırmak için EF 6 kullanmamız gerekir.
Ham SQL Sorgusu (EF6):Bağlantı girişi görünür.
SQL ifadelerinin where koşulu taşıması gerektiğinden, parametre değeri URL parametresinden geçirilir.
İlk olarak, SQL ifademiz sorgulamak için dizi birleştirmesini kullanır, aşağıdaki gibi:
Kod şöyledir:
Veritabanı tarafından yürütülen SQL ifadelerini aşağıdaki gibi görebilirsiniz:
ISIM SEÇİNİR [Sınıflandırma] NEREDE Adı = 'Mobil Geliştirme'; 1 Seç; --' GeçmekSQL ifadelerinin birleştiriliş şekli enjeksiyon riski altındadır。
Kodu, sorguları parametrize ederek SQL enjeksiyon saldırılarını önlemek için değiştirdik ve kod şu şekildedir:
exec sp_executesql N'SELECT Name FROM [Sınıflandırma] WHERE Name = @n',N'@n nvarchar(17)', @n=N'Mobile Dev''; 1 Seç; --'
Doğrudan ekleme kullanmak yerine, EF Core bunu parametreli SQL ifadelerine dönüştürür. Kaynaklar şunlardır:
(Son)
|