Почему Veracode все еще сообщает о CWE-89 после того, как моя функция была параметризована? - PullRequest
0 голосов
/ 13 сентября 2018

В соответствии с рекомендацией CWE-89 моя функция, указанная ниже, была параметризована, но Veracode по-прежнему сообщает, что CWE-89 доступен в этой функции.

Как видите, функция используется для генерации динамических запросов SQL на основе входных параметров.И есть только параметр @PrimaryValue , полученный из пользовательского ввода , в то время как другие динамические переменные за SELECT, FROM, JOIN, ON и WHERE запрашиваются избаза данных (не из пользовательского ввода).

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

enter image description here

1 Ответ

0 голосов
/ 13 сентября 2018

В вашем коде проблема с внедрением SQL. Например, пользователь может перейти к этому методу, параметр "intofile", например так:

* FROM Table1; DROP TABLE table2; intofile

С помощью этого кода пользователь преобразует ваш запрос в 3 запроса и после запуска table2 отбрасывается.

Прежде всего вы должны выполнить запрос в транзакции только для чтения. После этого вы должны использовать метод escape SQL для всех входных данных, чтобы удалить из него ключевые слова, такие как DROP.

...