Prasības: Projekts izmanto EF ORM ietvaru, lai pievienotu, dzēstu, modificētu un pārbaudītu datu bāzi, bet, saskaroties ar sarežģītiem vaicājumiem, var nebūt iespējams izmantot Linq un Lambda labākiem vaicājumiem, tāpēc mums ir jāizmanto EF 6, lai izpildītu vietējos SQL paziņojumus vaicājumiem.
Neapstrādāts SQL vaicājums (EF6):Hipersaites pieteikšanās ir redzama.
Tā kā SQL priekšrakstiem ir jābūt nosacījumam where, parametra vērtība tiek nodota caur URL parametru.
Pirmkārt, mūsu SQL priekšraksts vaicājumam izmanto virknes savienošanu šādi:
Kods ir šāds:
Datu bāzes izpildītos SQL paziņojumus var redzēt šādi:
SELECT Name FROM [Klasifikācija] WHERE Name = 'Mobilā izstrāde'; izvēlieties 1; --' IetSQL priekšrakstu savienošanas veids ir pakļauts injekcijas riskam。
Mēs modificējām kodu, lai novērstu SQL injekcijas uzbrukumus, parametrizējot vaicājumus, un kods ir šāds:
exec sp_executesql N'SELECT Name FROM [Klasifikācija] WHERE Name = @n',N'@n nvarchar(17)', @n=N'Mobile Dev''; izvēlieties 1; --'
Tā vietā, lai tieši izmantotu savienošanu, EF Core to pārvērš parametrizētos SQL priekšrakstos. Atsauces ir šādas:
(Beigas)
|