Использование urlencode в application.cfm для обнаружения XSS в URL ColdFusion
Я унаследовал некоторый унаследованный код ColdFusion, и около года назад на мой сайт попали XSS и SQL-инъекции.
Что заставляет меня проверять входящие данные, а также включать параметр ScriptProtect="all" в моем application.cfm
файл. Я получил его сканировать, и он пришел в порядок.
Недавно я снова проверил его и обнаружил множество уязвимостей, в частности одну, в которую встроен скрипт в URL.
Например, это было прикреплено к URL:
?’A<style > a(font0family:expression(alert(2424)))</style>
В который встроен скрытый JavaScript. Как можно использовать функцию ColdFusion, такую как URLencode()
в application.cfm
файл для обнаружения / предотвращения подобных атак XSS?
1 ответ
Есть несколько конкретных вещей, которые вы можете сделать, в зависимости от характера атак и типа приложения. Вот что я бы назвал "большой тройкой". Первый пункт - включить "Включить глобальную защиту сценариев" в области "Настройки" администратора Coldfusion.
Второе, и это чрезвычайно важно для внедрения SQL-кода, - это использование
<cfqueryparam cfsqltype="cf_sql_integer" value="#my_integer#">
В запросе на основе сценариев это будет выполнено:
<cfscript>
qget = new query(datasource=my_datasource);
qget.addParam(name='my_integer',value=url.my_id,cfsqltype='cf_sql_integer');
qresult = qget.execute(sql='
SELECT * from my_table
WHERE id = :my_integer
').getResult();
</cfscript>
Третий, зависит от того, используете ли вы JSON из своего приложения через API или внутренний вызов. Включение параметра "Prefix Serialized JSON" в CF Administrator с выбранным префиксом может также помочь в атаках с использованием межсайтовых сценариев.
Если вы не на сервере Adobe CF, не беспокойтесь. Как у Railo, так и у Blue Dragon есть эквивалентные функции.