Есть ли смысл беспокоиться о внедрении SQL в проект Winforms? - PullRequest
2 голосов
/ 13 января 2010

В SO и других местах практически невозможно публиковать длинные каскадные инструкции SQL в образце кода, если кто-то вежливо не указал, что лучше использовать параметризованный ввод и хранимые процедуры.

Недавний пример здесь .

Но имеет ли смысл беспокоиться о внедрении SQL в проект Winforms?

Ответы [ 3 ]

3 голосов
/ 13 января 2010

Есть ли причина не для написания безопасного кода базы данных? Я так не думаю.

Каждый должен иметь привычку безопасно выполнять SQL, поэтому вам даже не придется думать об этом при написании общедоступных приложений.

Также учтите, что большая часть кода, предназначенного для частного использования, станет общедоступной через несколько месяцев или лет. Например, «эй, это приложение для интранет-отчетности полезно, почему бы нам не загрузить его на наш общедоступный веб-сайт для использования нашими деловыми партнерами?»

  • Используйте параметры для отделения непроверенных данных от запроса SQL.
  • Вы можете интерполировать проверенные данные в запросы SQL. То есть, если у вас есть код для проверки того, что переменная может только быть целым числом (например), тогда ее можно рассматривать как целое число.
  • Для других динамических частей запроса (имен таблиц, имен столбцов, выражений и т. Д.) Нельзя использовать параметры запроса. Но вы можете отобразить пользовательский ввод в жестко закодированные строки. Например. если пользователь вводит 1, то сортировать по столбцу date. Если пользователь вводит 2, тогда сортируйте по столбцу status.
  • Игнорировать программистов, которые говорят "просто используйте хранимые процедуры!" как будто это как-то связано с защитой от внедрения SQL. Это не так.
2 голосов
/ 13 января 2010

Эпическая история из реальной жизни: Большой Босс компании из Среднего Запада пришел посмотреть, как продвигается проект. Не знаю, как это произошло, но каким-то образом из офиса планирования поступил новый набор заказов для клиента, которого раньше никто не видел. И пошел в производство примерно в то время, когда Босс пришел посмотреть. Его фамилия была О'Шонесси.

Использование параметризованного ввода полезно не только для предотвращения SQL-инъекций.

1 голос
/ 13 января 2010

Да, по всем причинам, которые вы видели в других проектах.

Ваша пользовательская база может быть меньше, но опасности те же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...