Изисквания: Проектът използва рамката EF ORM за добавяне, изтриване, модификация и проверка на базата данни, но при сложни заявки може да не е възможно да се използват Linq и Lambda за по-добри заявки, затова трябва да използваме EF 6 за изпълнение на нативни SQL оператори за заявки.
Сурова SQL заявка (EF6):Входът към хиперлинк е видим.
Тъй като SQL операторите трябва да носят условието where, стойността на параметъра се предава през URL параметъра.
Първо, нашето SQL изявление използва конкатенация на низове за запитване, както следва:
Кодът е следният:
Можете да видите SQL операторите, изпълнявани от базата данни, както следва:
SELECT Име ОТ [Класификация] КЪДЕТО Име = 'Мобилна разработка'; изберете 1; --' МинавамНачинът, по който се сплайсват SQL операторите, е изложен на риск от инжектиране。
Модифицирахме кода, за да предотвратим атаки с SQL инжекции чрез параметризиране на заявки, и кодът е следният:
изпълнителен sp_executesql N'SELECT Име ОТ [Класификация] КЪДЕТО Име = @n',N'@n nvarchar(17)', @n=N'Mobile Dev''; изберете 1; --'
Вместо директно да използва сплайсинг, EF Core го преобразува в параметризирани SQL оператори. Източниците са както следва:
(Край)
|