|
Cerință: Proiectul utilizează cadrul EF ORM pentru a adăuga, șterge, modifica și interoga baze de date, cu toate acestea, în fața interogărilor complexe, este posibil să nu fie posibilă utilizarea Linq, Lambda interogare mai bună, trebuie să utilizăm EF 6 pentru a executa instrucțiuni SQL native pentru interogare.
Interogare SQL nativă (EF6): https: //learn.microsoft.com/zh-cn/ef/ef6/querying/raw-sql
Deoarece instrucțiunea SQL trebuie să transporte o condiție where, valorile parametrilor sunt transmise ca parametri URL.
În primul rând, instrucțiunea noastră SQL utilizează concatenarea șirurilor de caractere pentru interogare, după cum urmează:
Codul este după cum urmează:
Puteți vedea instrucțiunea SQL executată de baza de date după cum urmează:
SELECT Name FROM [Classification] WHERE Name = 'Mobile Development';select 1;--' Prin îmbinarea instrucțiunilor SQL, există riscul de injectare.
Modificăm codul pentru a preveni atacul prin injectare SQL prin parametrizarea interogării după cum urmează:
exec sp_executesql N'SELECT Name FROM [Classification] WHERE Name = @n',N'@n nvarchar(17)',@n=N'Mobile Development'';select 1;--'
În loc să proceseze SQL direct folosind splicing, EF Core îl traduce în instrucțiuni SQL parametrizate. Referința de mai jos:
EF Core Series (V) Executarea instrucțiunilor sau vizualizărilor SQL, a procedurilor stocate h ttps:// www.itsvse.com/thread-9565-1-1.html (Sfârșit)
|
Articolul precedent: Insights: din grădina blogului pentru a vedea un blogger pentru a scrie o semnăturăUrmatorul articol: Utilizarea SQLMAP Penetration Tool SQL Injection Testing
|