Добавление вызова к функции перед присвоением значений

Была добавлена ​​функция очистки, чтобы предотвратить внедрение 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 для глубокой защиты.

Другие вопросы по тегам