Предотвращение XSS-атак на пользовательский HTML-контент в PHP способом eBay - PullRequest
15 голосов
/ 09 июня 2011

Я прочитал так много статей, описывающих методы предотвращения XSS-атак в пользовательском HTML-контенте с использованием функций, таких как htmlspecialchars и regexs, внесения в белый / черный список и использования сценариев фильтрации html, таких как HTML Purifier, HTMLawed и т. Д. И т. Д.

К сожалению, ни один из них не объясняет, как такой сайт, как eBay, позволяет использовать такой огромный массив потенциально вредоносных тегов HTML, таких как <link>, <script>, <object>, а также стили CSS и атрибуты HTML, такие как фон: url () и т. д. Похоже, что они позволяют пользователям добавлять практически что угодно в описания своих элементов. Я видел некоторые из самых сложных HTML, Javascript и Flash шаблонов в описаниях предметов.

Что eBay делает по-другому? Есть ли какая-то другая техника или слой, который мне не хватает, который позволяет им блокировать XSS-атаки, но в то же время позволяет почти все, что нужно включить в описание предмета пользователя?

Буду очень признателен за любые идеи или понимание этого вопроса!

Ответы [ 3 ]

11 голосов
/ 09 июня 2011

Легко, когда у тебя армия программистов и военный сундук, полный денег.

Это не ракетостроение.Они идентифицируют случай уязвимости и, вероятно, кодируют его с помощью Regex и Javascript на внешнем интерфейсе, а также тщательной внутренней проверки, чтобы гарантировать, что данные не будут скомпрометированы до вставки.Это то же самое, что мы все должны делать, за исключением того, что для Ebay он гораздо более зрелый, чем тот, над которым работает большинство из нас, и FAR больше.

Если это что-то вроде банка, в котором я работал, у них естькоманда PAS, которая занимается поиском мелких ошибок в продуктах, открытием билетов у инженеров и отслеживанием процесса в приоритетном порядке.Между разработчиками, тестировщиками, менеджментом качества и PAS нет никаких причин, по которым уязвимость должна выходить из строя, но если она случится, она должна быстро реагировать.на этот вызов, если вы планируете идти по этому пути.Начните с того, чтобы изначально заблокировать JavaScript.Затем улучшите, чтобы разрешить - some-- с помощью метода, который вы считаете безопасным, - и разрешите только то, что безопасно, по мере продолжения.Продолжайте этот процесс, позволяя все больше и больше, ловя крайние случаи, когда они появляются в тестировании или производстве.Постепенно вы перейдете от разрешения того, что разрешено, к блокированию того, что не разрешено.Хотя это должно быть понятно, даже самые передовые компании упускают из виду основную концепцию управления и улучшения жизненного цикла.

При этом при попытке санации входных данных лучше всего комбинировать методы проверки как на стороне, так и на стороне сервера.Интерфейс обеспечивает более интуитивную быструю обратную связь с клиентами, но, как и любой другой язык на стороне клиента, могут быть преодолены опытными пользователями.Проверка бэкэнда - это ваш брандмауэр, гарантирующий, что все, что ускользает от внешнего интерфейса, обрабатывается надлежащим образом.Ваша БД - это ваш спасательный круг, поэтому защищайте ее любой ценой!

Если у вас нет армии и огромного бюджета, вы пытаетесь кодировать для каждого крайнего случая что-то столь широкое, как CMS, которое позволяет вводить почти карт-бланш почтивсегда заканчивается проигрышным финансовым предприятием.

2 голосов
/ 09 июня 2011

Я провел с ним некоторое время и смог alert(document.cookie) - то, что их черные списки явно пытаются предотвратить - опираясь на давнишний подвиг, перечисленный здесь:

http://menno.b10m.net/blog/blosxom.cgi/web/ebay-xss.html

На самом деле я не разместил листинг, поэтому могу лишь с уверенностью сказать, что он работает в режиме предварительного просмотра листинга.

Если это какой-либо признак, то ответ на ваш вопрос:это: Ebay на самом деле не предотвращает атаки XSS.У них есть некоторые черные списки, но они, кажется, довольно тривиальны, чтобы уклониться.

Редактировать: Мне кажется, это работает на моей странице "обо мне" на ebay , в реальном временистр.Короче говоря, попытки ebay отфильтровать XSS кажутся довольно жалкими.

1 голос
/ 09 июня 2011

Хотя я не могу сказать наверняка, есть много методов, чтобы помочь. Основным компонентом для этого является наличие активного и доступного отдела безопасности + разработки.

Хотя они наверняка имеют механизм фильтрации, код, вероятно, оценивается в симуляторах и оценивается в соответствии с определенными критериями (такими как подозрительное содержимое, запутывание и т. Д.).

Кроме того, есть также аспект Механический турок , который Amazon широко использует (в основном, они используют людей с «дешевой рабочей силой», чтобы разумно судить о чем-либо).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...