В моем приложении coldfusion есть WYsIWYG-редактор, и мне нужно предотвратить XSS-атаки. Существуют ли какие-либо способы Coldfusion для устранения всех атак типа сценариев?
ColdFusion как предотвратить атаки XSS в WYSIWYG
Ответы (4)
Главный вопрос, который я хотел бы задать, — для чего нужен этот WYSIWYG? Многие WYSIWYG позволяют вам определять определенные теги, которые нужно удалить из кода.
Например, TinyMCE может удалить теги script с помощью
http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/invalid_elements
К сожалению, это не решает вашу проблему, поскольку все формы отправки данных на стороне клиента можно обойти. Если вы должны использовать WYSIWYG, то вам действительно нужно убедиться, что вы охватили все свои базы при проверке и отображении формы. Вы можете удалить все теги script и обязательно удалить все атрибуты событий и код javascript в атрибутах ссылок href.
Если допустимо разрешить только определенное подмножество тегов, я бы предложил использовать BBML, BBCode или Markdown.
http://www.depressedpress.com/Content/Development/ColdFusion/Extensions/DP_ParseBBML/Index.cfm
http://en.wikipedia.org/wiki/BBCode
http://sebduggan.com/projects/cfxmarkdown
Вы можете использовать TinyMCE в качестве WYSIWYG для BBCode http://tinymce.moxiecode.com/examples/example_09.php, а StackOverflow использует отличный редактор разметки http://github.com/cky/wmd а>
Вот полезная информация, если вы хотите отрендерить BBCode в Coldfusion
http://www.sitepoint.com/forums/showthread.php?t=248040
Следует учитывать, что, хотя удаление тегов в браузере с помощью TinyMCE является хорошей идеей, это делает фатальное предположение, что пользователь будет отправлять контент через браузер. Все, что вы делаете в браузере, должно быть продублировано на сервере, потому что злоумышленники могут обойти любую проверку, которая происходит в браузере.
С учетом сказанного проверьте эту статью: http://www.fusionauthority.com/techniques/3908-how-to-strip-tags-in-three-easy-lessons.htm, где это описано более подробно, чем здесь. По сути, в нем обсуждается использование регулярных выражений и UDF для легкого удаления тегов. Последний пример особенно важен... проверьте его.
Чтобы преобразовать эти теги ‹> или используйте функцию HTMLEditformat.