Мне дали проект, в котором разработчик в то время не параметризировал SQL-запросы, а просто объединял значения, предоставленные пользователем. Теперь передо мной была поставлена задача сделать приложение защищенным от атак SQL-инъекций с минимальными усилиями. Многие SQL-запросы распределены по всему коду, поэтому постобработка всех запросов практически невозможна. Это будет стоить мне много месяцев работы.
Преимущество состоит в том, что все запросы выполняются одним методом. Мое решение теперь состоит в том, чтобы проверить строку запроса в этом единственном методе, в котором выполняются все запросы, на точки с запятой и ключевые слова 'GO' перед выполнением. На этом этапе следует отметить, что я могу гарантировать, что всегда выполняется ровно один запрос. Если в строке более одной точки с запятой или оператора «GO», я отказываю в выполнении базе данных и прекращаю процесс.
Мой вопрос сейчас: есть ли у кого-нибудь лучшее предложение для решения проблемы? Как бы вы решили эту проблему здесь?
Спасибо.