2016-04-29 8 views
0

Я ищу инструмент, который будет проходить через мои файлы кода coldfusion и добавление cfqueryparam, если необходимо. Я нашел много, которые будут сканировать и показывать мне, где мне нужно внести изменения, но я нашел один в http://www.webapper.com/blog/index.php/2008/7/22/ColdFusion-SQL-Injection, который довольно близок к тому, что я искал, но он не добавляет cfsqltype (или maxlength). Мне было интересно, если это все еще предотвращает внедрение sql без cfsqltype? Если это требуется (я знаю, что это технически необязательно) знаете ли вы о другом инструменте, который это сделает? Я считаю, что важно убедиться в том, что любые переменные в предложении order by также параметризуются, что этот инструмент не проверяет.Инструмент для сканирования запросов и добавления cfqueryparam при необходимости

Я думаю об уменьшении и изменении кода от http://www.webapper.com/blog/index.php/2008/7/22/ColdFusion-SQL-Injection, чтобы сделать все это, но я подумал, что было бы разумно сначала спросить.

+0

Без cfsqltype атрибута было бы предположить cf_sql_varchar. По-прежнему будет препятствовать SQL-инъекции в качестве связанного параметра вместо строки. База данных должна будет использовать каждый параметр для типа, который принимает база данных для каждого столбца. Это может замедлить все. –

+0

* все еще предотвращает внедрение sql без cfsqltype * Да, привязка переменных предотвращает выполнение «значения» в виде команд sql. Однако вы правы, что вы должны использовать соответствующий тип, чтобы избежать [опасностей неявного преобразования] (http://stackoverflow.com/questions/27049918/coldfusion-parameterizing-a-query/27066113#27066113). * переменные в предложении order by параметризуются .. которые этот инструмент не проверяет * Вы не можете параметризовать порядок (обычно). Он использует имена объектов, которые должны оцениваться как команды sql. Переменные привязки предназначены для * предотвращения * того, что происходит. – Leigh

+0

(Изменить) * сгибание и изменение кода * Я не думаю, что это можно было бы сделать легко. Чтобы определить тип cfsqltype, инструменту необходимо проанализировать SQL для каждого запроса, определить все задействованные таблицы, затем запросить метаданные db, чтобы идентифицировать типы столбцов и сопоставить их с соответствующим cfsqltype. Это намного сложнее сделать после факта с произвольным запросом. RE: * предположил бы cf_sql_varchar * Ну технически 'cf_sql_char', но yep .. по существу он по умолчанию имеет строковый тип :) – Leigh

ответ

2

Используйте этот инструмент или QPScanner, чтобы скопировать вашу базу кода и найти запросы с кодом cfqueryparm или пропустить cfprocparam.

После того, как вы их найдете, ВРУЧНУЮ ОБНОВЛЕНИЕ И ТЕСТИРОВАНИЕ КАЖДЫЙ INSTANCE.

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

Я прошел через этот процесс a number of times и я могу гарантировать, что вы должны принять ваше время обновления кода правильно ..