EF Core необработанный запрос с предложением Like - PullRequest
1 голос
/ 25 февраля 2020

Я хочу создавать запросы, используя EF FromSqlInterpolated или FromSqlRaw, который позволяет мне использовать предложения Like, но я не знаю, как правильно сделать это, не открывая приложение для атак SqlInjection. Один первый подход привел меня к следующему коду:

var results = _context.Categories.FromSqlInterpolated(
$"Select * from Category where name like {"%" + partialName + "%"}");

Первый тест работал нормально, он возвращает результаты при предоставлении ожидаемых строк и ничего не возвращает, когда я предоставляю что-то вроде ';select * from Category Where name='Notes'--%'; Тем не менее я не знаю много о SqlInjection, по крайней мере, недостаточно, чтобы чувствовать себя в безопасности с запросом, показанным ранее. Кто-нибудь знает, является ли запрос безопасным, или есть ли правильный способ сделать это? Спасибо

1 Ответ

2 голосов
/ 25 февраля 2020

С этот документ

Методы FromSqlInterpolated и ExecuteSqlInterpolated позволяют использовать синтаксис строковой интерполяции таким образом, что защищает от SQL инъекционных атак .

var results = _context.Categories.FromSqlInterpolated(
$"Select * from Category where name like {"%" + partialName + "%"}");

Или вы также можете изменить свой запрос на Linq-to-Entity, например,

var results = _context.Categories.Where(p => p.name.Contains(partialName ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...