Я ищу инструмент, который будет проходить через мои файлы кода 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, чтобы сделать все это, но я подумал, что было бы разумно сначала спросить.
Без cfsqltype атрибута было бы предположить cf_sql_varchar. По-прежнему будет препятствовать SQL-инъекции в качестве связанного параметра вместо строки. База данных должна будет использовать каждый параметр для типа, который принимает база данных для каждого столбца. Это может замедлить все. –
* все еще предотвращает внедрение sql без cfsqltype * Да, привязка переменных предотвращает выполнение «значения» в виде команд sql. Однако вы правы, что вы должны использовать соответствующий тип, чтобы избежать [опасностей неявного преобразования] (http://stackoverflow.com/questions/27049918/coldfusion-parameterizing-a-query/27066113#27066113). * переменные в предложении order by параметризуются .. которые этот инструмент не проверяет * Вы не можете параметризовать порядок (обычно). Он использует имена объектов, которые должны оцениваться как команды sql. Переменные привязки предназначены для * предотвращения * того, что происходит. – Leigh
(Изменить) * сгибание и изменение кода * Я не думаю, что это можно было бы сделать легко. Чтобы определить тип cfsqltype, инструменту необходимо проанализировать SQL для каждого запроса, определить все задействованные таблицы, затем запросить метаданные db, чтобы идентифицировать типы столбцов и сопоставить их с соответствующим cfsqltype. Это намного сложнее сделать после факта с произвольным запросом. RE: * предположил бы cf_sql_varchar * Ну технически 'cf_sql_char', но yep .. по существу он по умолчанию имеет строковый тип :) – Leigh