Zahteve: Projekt uporablja EF ORM okvir za dodajanje, brisanje, spreminjanje in preverjanje baze podatkov, vendar zaradi zapletenih poizvedb morda ni mogoče uporabiti Linq in Lambda za boljše poizvedbe, zato moramo uporabiti EF 6 za izvajanje nativnih SQL ukazov za poizvedbe.
Surova SQL poizvedba (EF6):Prijava do hiperpovezave je vidna.
Ker morajo SQL stavki prenašati pogoj kje, se vrednost parametra prenese skozi parameter URL.
Najprej naš SQL ukaz uporablja konkatenacijo nizov za poizvedbo, kot sledi:
Koda je naslednja:
SQL ukaze, ki jih izvaja baza podatkov, lahko vidite na naslednji način:
IZBERI ime IZ [Klasifikacija] KJER ime = 'mobilni razvoj'; Izberite 1; --' PrelazNačin, kako se SQL stavki povezujejo, je ogrožen za vbrizgavanje。
Kodo smo spremenili, da preprečimo napade z injekcijo SQL, s parametrično obdelavo poizvedb, koda pa je naslednja:
exec sp_executesql N'SELECT Name FROM [Classification] WHERE Name = @n',N'@n nvarchar(17)', @n=N'Mobile Dev''; Izberite 1; --'
Namesto neposredne uporabe spajanja jih EF Core pretvori v parametrizirane SQL stavke. Reference so naslednje:
(Konec)
|