Wymagania: Projekt korzysta z frameworka EF ORM do dodawania, usuwania, modyfikowania i sprawdzania bazy danych, ale w obliczu złożonych zapytań może nie być możliwe użycie Linq i Lambda do lepszych zapytań, dlatego musimy użyć EF 6 do wykonywania natywnych instrukcji SQL do zapytań.
Surowe zapytanie SQL (EF6):Logowanie do linku jest widoczne.
Ponieważ instrukcje SQL muszą przenosić warunek where, wartość parametru jest przekazywana przez parametr URL.
Po pierwsze, nasze wyrażenie SQL wykorzystuje konkatenację ciągów do zapytań, w następujący sposób:
Kod jest następujący:
Możesz zobaczyć instrukcje SQL wykonywane przez bazę danych w następujący sposób:
WYBIERZ nazwę Z [Klasyfikacja] GDZIE nazwa = 'Mobile Development'; Wybierz 1; --' PrzechodzićSposób łączenia instrukcji SQL jest narażony na wstrzykiwanie。
Zmodyfikowaliśmy kod, aby zapobiec atakom SQL injection poprzez parametryzację zapytań, a kod wygląda następująco:
exec sp_executesql N'SELECT Name FROM [Classification] WHERE Name = @n',N'@n nvarchar(17)', @n=N'Mobile Dev''; Wybierz 1; --'
Zamiast bezpośrednio używać splicingu, EF Core konwertuje je na parametryzowane instrukcje SQL. Źródła są następujące:
(Koniec)
|