Požiadavky: Projekt používa framework EF ORM na pridávanie, mazanie, úpravu a kontrolu databázy, ale pri zložitých dotazoch nemusí byť možné použiť Linq a Lambda na lepšie dotazy, preto musíme použiť EF 6 na vykonávanie natívnych SQL príkazov na dotazovanie.
Surový SQL dotaz (EF6):Prihlásenie na hypertextový odkaz je viditeľné.
Keďže SQL príkazy musia niesť podmienku where, hodnota parametra sa prenáša cez parameter URL.
Najprv náš SQL príkaz používa konkatenáciu reťazcov na dotazovanie, nasledovne:
Kód je nasledovný:
SQL príkazy vykonávané databázou môžete vidieť nasledovne:
VYBERTE názov Z [Klasifikácia] KDE názov = 'mobilný vývoj'; Vyberte 1; --' PrejsťSpôsob, akým sa SQL príkazy spájajú, je ohrozený injekciou。
Kód sme upravili tak, aby sme zabránili SQL injekčným útokom parametrizáciou dotazov, a kód je nasledovný:
exec sp_executesql N'SELECT Name FROM [Classification] WHERE Name = @n',N'@n nvarchar(17)', @n=N'Mobile Dev''; Vyberte 1; --'
Namiesto priameho použitia spájania ho EF Core konvertuje na parametrizované SQL príkazy. Referencie sú nasledovné:
(Koniec)
|