Добавление вызова к функции перед присвоением значений
Была добавлена функция очистки, чтобы предотвратить внедрение SQL путем удаления определенных символов. Конечно, трудно вручную просмотреть все файлы и найти, куда следует добавить функцию. Есть ли способ автоматизировать этот процесс или использовать поиск / замену? То, что я сейчас делаю, ищет SELECT
, UPDATE
или же INSERT
заявления и внутри них я ищу #...#
и заменить его на #sanitize(...)#
но это может быть сложнее, если в таблице обновляется несколько столбцов.
РЕДАКТИРОВАТЬ: можно ли использовать grep? Если вы не знаете ответ, рассмотрите вопрос об этом.
3 ответа
SQL-инъекция может происходить как в вызове SELECT, так и в любом другом SQL-вызове. Не просто ОБНОВЛЕНИЕ, а ВСТАВКА.
Также загляните в cfqueryparam. Это не только поможет предотвратить внедрение SQL-кода, но и обеспечивает небольшое повышение производительности.
Вы можете сделать это глобально в своем файле Application.cfm или Application.cfc.
<cfloop collection="#form#" item="fItem">
<cfset form[fItem] = SanitizeFunction(form[fItem])/>
</cfloop>
Добавьте цикл для URL, CGI и Cookie, и вы эффективно изучите каждую из предоставленных пользователем переменных. Эта концепция лежит в основе "Брандмауэра веб-приложений" - то, что проверяет каждый пользовательский ввод и очищает его или проверяет, чтобы удостовериться, что это то, что он утверждает.
Посмотрите на продукт супер-гуру Пита Фрейтага Foundeo для примера. У него есть много других ресурсов. WAF обычно ищут другие возможные уязвимости, а не только SQLi, поэтому они могут стоить вашего времени.
Как сказал Скотт - вы действительно должны изучить каждый запрос и добавить cfqueryparam для глубокой защиты.