Использование 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 есть эквивалентные функции.

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