Как программно очистить параметры cfquery ColdFusion?

Я унаследовал большое устаревшее приложение ColdFusion. Существуют сотни операторов ‹cfquery›some sql here #variable#‹/cfquery›, которые необходимо параметризовать следующим образом: ‹cfquery› some sql here ‹cfqueryparam value="#variable#"/› ‹/cfquery›

Как я могу программно добавить параметризацию?

Я думал о написании какого-нибудь регулярного выражения или решения типа sed/awk'y, но похоже, что кто-то где-то решал такую ​​проблему. Бонусные баллы начисляются за автоматическое определение типа sql.


person Nathan Feger    schedule 15.09.2008    source источник


Ответы (5)


Есть сканер queryparam, который найдет их для вас на RIAForge: http://qpscanner.riaforge.org/

person Joe Zack    schedule 15.09.2008
comment
Примечание. В версии 0.8 сканера QueryParam будет добавлена ​​возможность автоматического исправления параметров, но в настоящее время он просто их находит. - person Peter Boughton; 16.09.2008

Здесь есть ссылка на скрипт: http://www.webapper.net/index.cfm/2008/7/22/ColdFusion-SQL-Injection, который сделает за вас большую часть тяжелой работы. Все, что вам нужно сделать, это проверить запросы и убедиться, что синтаксис будет правильно проанализирован.

Нет никакого оправдания тому, чтобы не использовать CFQueryParam, кроме того, что он гораздо более безопасен, это повышение производительности и лучший способ обработки значений в кавычках в символьных типах столбцов.

person Dan Wilson    schedule 15.09.2008
comment
Этот скрипт теперь находится на github, чтобы люди могли его взять и внести свой вклад. github.com/mhenke/WebApper-ColdFusion-SQL-Injection - person Mike Henke; 29.07.2011

Имейте в виду, что вы не сможете решить все с помощью ‹cfqueryparam›.

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

person Community    schedule 16.09.2008

<cf_inputFilter
            scopes = "FORM,COOKIE,URL"
            chars = "<,>,!,&,|,%,=,(,),',{,}"
            tags="script,embed,applet,object,HTML">

Мы использовали это для противодействия недавней атаке SQL-инъекций. Мы добавили его в файл Application.cfm для нашего сайта.

person betelgeuce    schedule 16.09.2008

Я сомневаюсь, что есть решение, которое точно удовлетворит ваши потребности. Единственный вариант, который я вижу, — написать свой собственный рекурсивный поиск, который создаст для вас отчет, или использовать одно из приложений/скриптов, перечисленных выше. По сути, вам придется редактировать каждую страницу или одобрять все автоматические изменения.

person kooshmoose    schedule 16.09.2008