Проверьте строку запроса C # для внедрения SQL - PullRequest
0 голосов
/ 26 января 2019

Мне дали проект, в котором разработчик в то время не параметризировал SQL-запросы, а просто объединял значения, предоставленные пользователем. Теперь передо мной была поставлена ​​задача сделать приложение защищенным от атак SQL-инъекций с минимальными усилиями. Многие SQL-запросы распределены по всему коду, поэтому постобработка всех запросов практически невозможна. Это будет стоить мне много месяцев работы.

Преимущество состоит в том, что все запросы выполняются одним методом. Мое решение теперь состоит в том, чтобы проверить строку запроса в этом единственном методе, в котором выполняются все запросы, на точки с запятой и ключевые слова 'GO' перед выполнением. На этом этапе следует отметить, что я могу гарантировать, что всегда выполняется ровно один запрос. Если в строке более одной точки с запятой или оператора «GO», я отказываю в выполнении базе данных и прекращаю процесс.

Мой вопрос сейчас: есть ли у кого-нибудь лучшее предложение для решения проблемы? Как бы вы решили эту проблему здесь?

Спасибо.

1 Ответ

0 голосов
/ 26 января 2019

Я действительно не думаю, что что-либо, кроме использования именно той функции SQL Server, которая его предотвращает (параметризованный запрос), поможет вам.Вы можете в какой-то степени попытаться предотвратить инъекцию, удаляя очевидные векторы инъекций, но вы никогда не будете увереныХакеры - изобретательные ребятаЭто очень легко сделать, например, Dapper.Но я понимаю, что объем имеющегося у вас кода может отнять много времени, но, к сожалению, пути к этому нет.

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