LINQ к объектам и внедрению SQL

Я видел несколько конфликтующих статей о том, восприимчив ли L2E к Внедрению SQL.

Из MSDN:

Хотя состав запроса возможен в LINQ к Объектам, он выполняется через объектную модель API. В отличие от SQL-запросов Объекта, LINQ к запросам Объектов не составлены при помощи обработки строк или конкатенации, и они не восприимчивы к традиционным атакам с использованием кода на SQL.

Это подразумевает, что существуют "нетрадиционные" нападения, которые могут работать? Эта статья имеет один пример непараметризированного запроса - действительно ли безопасно предположить, что, если Вы передаете в предоставленных пользователями данных через переменную, они будут параметризованы?

Если я делаю:

from foo in ctx.Bar where foo.Field = userSuppliedString select foo;

действительно ли я в безопасности?

10
задан Neil N 2 December 2010 в 20:27
поделиться

2 ответа

В вашем примере вы используете переменную (userSuppliedString), поэтому она будет параметризована.

Если в Вашем коде было литеральное значение:

from foo in ctx.Bar where foo.Field == "Hi" select foo;

...то EF 1 его не параметрирует, но и здесь нет опасности SQL-инъекции, так как это литерал.

9
ответ дан 4 December 2019 в 00:24
поделиться

Удачи в попытках заставить кого-нибудь сказать, что определенный кусок кода не имеет определенной уязвимости в безопасности. При этом лично меня не волновали бы атаки SQL Injection через вектор запроса LINQ (если только я не делал что-то очень причудливое за кулисами).

3
ответ дан 4 December 2019 в 00:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: