Я довольно новичок в XSS и очистителе HTML (исследуется на несколько дней). Тем не менее, я был программистом и веб-разработчиком на протяжении многих лет. (Да, я знаю, стыдно, что я не сталкивался с XSS. Я думал, что это похоже на материал. Но он не исследовал его подробно.)HTML очиститель от внешних ресурсов
AFAIK, атакующие могут загружать свои злые внешние JS в таких местах, как IMG SRC, а в других действительных теги ". Поэтому я понимаю, что если я запрещаю html пользователю загружать ресурсы за пределами моего домена (и очищать то, что у меня уже есть в документе/базе данных), могу ли я сказать, что на моем сайте нет атак XSS?
Позвольте мне перефразировать и структурировать мои запросы.
Во-первых, я собираюсь создать веб-сайт, который позволяет пользователям вводить (напрямую или через выгрузку) html-коды. Довольно типично.
Я буду использовать очиститель HTML для «очистки» кодов пользователей.
Первый вопрос: (Q1) Даже после использования HTML-очистителя злоумышленники могут загружать свои злые скрипты с помощью действительных атрибутов html. Это правда?
И (Q2) Я полагаю, я не могу позволить < скрипт> в настройке очистителя HTML, так как любые злые вещи могут произойти в JS в теге < скрипт>. Это правда?
(Q3) Может ли очиститель HTML выделять все ссылки в любом месте текста, которые не относятся к доменам, которым я доверял?
И, наконец, теоретический вопрос (Q4) Если текст был очищен HTML и не содержит внешних ссылок, можем ли мы сказать, что он абсолютно свободен от XSS?
P.S. еще одна вещь заключается в том, что я хотел бы разрешить некоторые (очень ограниченные) JS. Как вы думаете, нормально ли конвертировать (мои пользовательские) теги, такие как [ajax: getUserName] в настоящий JS, в конечном процессе?
Большое спасибо!
+1 Большое спасибо за ваш ответ. Re (Q1) я прочитал несколько сообщений, говорящих, что если атрибут связывается с внешним злым ресурсом, HTML Purifier не может очистить содержимое в нем. Это имеет смысл для меня, а также меня беспокоит. Не могли бы вы еще немного объяснить, как очиститель HTML обрабатывает эту ситуацию? Для (Q3) является '% URI.DisableExternal' вещь, которую я ищу? Большое спасибо!! – midnite
«Сообщение», о котором я упомянул, будет в http://htmlpurifier.org/phorum/read.php?3,6194 ** Запись MGH ** в октябре 06, 2013 04:17. И я считаю, что я прочитал несколько вопросов stackoverflow о подобной вещи. – midnite
Это другая проблема, связанная с тем, что HTML-очиститель позволяет HTML-код, который может заставить браузер выполнять дополнительные запросы GET (например, изображения). Вы можете отключить это, установив% URI.DisableResources (но это отключит изображения) –