Entity Framework, LinqToSQL и внедрение SQL - PullRequest
5 голосов
/ 13 августа 2010

Возможно ли, чтобы проект, использующий полностью LinqToSQL или Entity Framewok, страдал от SQL-инъекций.

Я думаю, что, вероятно, не потому, что SQL, который генерирует ORM, должен быть без SQL-инъекций.Но я не уверен.

Ответы [ 2 ]

10 голосов
/ 13 августа 2010

Когда вы используете эти платформы по назначению, то есть непосредственно для сущностей / таблиц, тогда нет.Все сравнения строк (т.е. where name = 'smith') параметризованы.

Единственными уязвимыми точками являются:

  • любая строка может быть выполнена непосредственно в контексте.dbContext.ExecuteQuery(); с любым видом деструктивной строки.

  • хранимая процедура, выполняющая динамический SQL с использованием любых заданных параметров

3 голосов
/ 13 августа 2010

«Это зависит».

Простые запросы LINQ к объектам L2S или EF безопасны для инъекций, но вы всегда можете вызвать хранимую процедуру или функцию, которая не безопасна для инъекций.

Это, очевидно, было бы крайним случаем, но да, бывает, что люди пишут SP / функции, которые открыты для инъекций (сочинение строк в SQL со значениями параметров внутри proc).

...