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