XSS, который я показываю, - это те, которые действительно прошли через наш js-код.

тны XSS-атаки типа Атрибут:

<DIV STYLE="width: expression(alert('XSS'));">

Или же

<DIV STYLE="background-image: url(javascript:alert('XSS'))">

Все примерыя видел используйте либо выражение, либо функциональность URL-адреса - в основном для чего-то подобного эта функция требует "(" и ")".

Я думаю о следующем методе фильтрации тегов стиля, я бы проверил их, используя следующую (приблизительно) грамматику:

identifier: [a-zA-Z_][a-zA-Z0-9\-]*
number: [0-9]+
string: '[a-zA-Z_0-9 ]*'
value : identifier | number | string | number + "(em|px)" | number +"%"
entry: identifier ":" value (\s value )*
style: (entry ;)*

Поэтому я в основном разрешаю свойства ASCII с числовыми значениями или очень ограниченными строковыми значениями (в основном для имен шрифтов), не позволяя использовать что-либо, похожее на вызов.

Вопрос достаточно хорош? Есть ли атаки, которые могут сделать что-то подобное:

<DIV STYLE="this-is-js-property: alert 'XSS';">

И добиться успеха?

Кто-нибудь может подумать об уязвимости XSS такого теста?

Чтобы было понятно

Мне нужны атрибуты стиля, так как многие инструменты, такие как TinyMCE, используют их, и отмена безвредных атрибутов стиля значительно повредит функциональности.

Поэтому я предпочитаю проходить общие случаи, удаляя все, что может использовать @import, url, выражение и т. Д. А также убедитесь, что основной синтаксис css в порядке.

Ответ

Нет, это небезопасно из-за уязвимости клик-джека.

Ответы на вопрос(0)

Ваш ответ на вопрос