Где ORM уязвимы для внедрения SQL? - PullRequest
10 голосов
/ 02 марта 2011

При использовании ORM (Entity Framework, LINQ to SQL, NHibernate ...), атаки SQL-инъекций смягчаются замыслом?

Если нет, где я должен делать дополнительную проверку / очистку, чтобы предотвратитьуязвимость

Ответы [ 4 ]

5 голосов
/ 03 марта 2011

Большинство, если не все, основные ORM используют параметризованный SQL, который защитит вас от прямой атаки SQL-инъекцией.Однако параметризованный SQL на уровне приложений не защитит вас от скрытых SQL-атак.Это происходит, когда что-то в конце строки, кроме ORM, напрямую объединяет пользовательский ввод в оператор SQL (например, хранимая процедура пакетного запуска, которая объединяет ввод пользователя для создания непараметризованного динамического запроса).Обратите внимание, что это вообще не проблема ORM, но я подумал, что хочу подчеркнуть, что параметризованный SQL защищает вас от инъекций, только если он используется везде, а не только в ORM.

0 голосов
/ 15 февраля 2014

ORM обычно используют много динамического SQL, что небезопасно, поскольку предоставляет пользователям учетных записей приложения и / или службы возможность выполнять специальные SQL-запросы.Правильное решение - только программисты и администраторы БД должны иметь DataReader / DataWriter и все программы, которые касаются базы данных, чтобы ничего не использовать, кроме параметризованных хранимых процедур, всегда без доступа к DataReader / DataWriter, связанным с программой.Они могут получить доступ только к SP, я говорю, что они могут.Только администраторы и программисты БД должны иметь возможность выполнять специальные SQL-запросы.

0 голосов
/ 02 марта 2011

ORM разработаны для обеспечения безопасности в основных понятиях. Большую часть времени вам не придется беспокоиться об этом, но если вы думаете, что можете столкнуться с реальным взломом, вам следует выполнить пользовательскую настройку.

Для простых приложений, простой SQL-инъекцией вы будете покрыты. Ни одно тело (серьезно, ни одно тело) никогда не даст вам серебряную пулю в вопросах безопасности и SQL-инъекций. Это мой совет.

0 голосов
/ 02 марта 2011

Они находятся в NHibernate с помощью параметризованных запросов.

...