SQL-инъекции и .NET 4 - PullRequest
       25

SQL-инъекции и .NET 4

1 голос
/ 08 октября 2010

Есть ли в .NET 4 инструменты для "автоматизации" проверок полей SQL на предмет инъекций SQL?

Я видел эту статью, но боюсь, может быть, не на сегодняшний день ...

EDIT:
Oracle Db-совместимый ...

Ответы [ 4 ]

5 голосов
/ 08 октября 2010

Самый простой инструмент в ADO.NET - это использование параметров sql для всех переменных вашего запроса, которые являются переменными. Это также имеет преимущество в эффективности. Даже если у вас есть явный sql в вашем коде и вы вообще не используете хранимые процедуры или функции, вы все равно получаете оба этих преимуществ, используя одну и ту же строку запроса, изменяя только значения ваших параметров.

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

1 голос
/ 08 октября 2010

Это вопрос "ADO.NET"? Если это так, то да, SQLParameters ваш друг. Статья Скотта Гу на эту тему старая, но все еще довольно полезная и содержит полезные советы.

http://weblogs.asp.net/scottgu/archive/2006/09/30/Tip_2F00_Trick_3A00_-Guard-Against-SQL-Injection-Attacks.aspx

Если вы не используете ADO.NET, большинство ORM защитят вас от атак. Например, LLBLGen генерирует параметризованные запросы. Как и Linq для SQL. Я предполагаю, что они все делают, хотя проверьте ваш вкус ORM:)

1 голос
/ 08 октября 2010

Я полагаю, что вы избежите этой проблемы, используя sqlparameters.

0 голосов
/ 10 октября 2010

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

...