LINQ для сущностей и SQL-инъекция
Я видел пару конфликтующих статей о том, восприимчив ли L2E к SQL-инъекции.
С MSDN:
хотя состав запроса возможен в LINQ to Entities, это выполняется через API объектной модели. В отличие от запросов Entity SQL, Запросы LINQ to Entities не составляются с помощью манипуляции строками или конкатенация, и они не восприимчивы к традиционному SQL инъекция атаки.
означает ли это, что существуют "нетрадиционные" атаки, которые могут работать? в этой статье есть один пример непараметризованного запроса-можно ли предположить, что если вы передадите пользовательские данные через переменную, она будет параметризована?
Если я это сделаю:
from foo in ctx.Bar where foo.Field = userSuppliedString select foo;
Я в безопасности?
2 ответов
в вашем примере вы используете переменные (userSuppliedString
), поэтому он будет быть параметризованы.
Если у вас было буквальное значение в коде:
from foo in ctx.Bar where foo.Field == "Hi" select foo;
...тогда EF 1 не будет параметризовать его, но есть также нулевая опасность SQL-инъекции, поскольку это литерал.
удачи, пытаясь заставить кого-нибудь сказать вам, что определенный кусок кода не имеет определенной уязвимости. При этом я лично не был бы обеспокоен атаками SQL-инъекций через вектор запросов LINQ (если только я не делал что-то очень странное за кулисами).