Ataques XSS y atributos de estilo

Hay ataques conocidos de Style Attribute XSS como:

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

O

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

Todos los ejemplosHe visto use la funcionalidad de expresión o url; básicamente, una función como esa requiere "(" y ")".

Estoy pensando en seguir el método de filtrado de etiquetas de estilo, las comprobaría usando la siguiente gramática (aproximadamente):

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 ;)*

Entonces, básicamente, permito propiedades ASCII con valores numéricos o valores de cadena muy limitados (básicamente para nombres de fuente) que no permiten usar nada que parezca una llamada.

La pregunta es esto lo suficientemente bueno? ¿Hay algún ataque que pueda hacer algo así?

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

¿Y triunfar?

¿Alguien puede pensar en la vulnerabilidad XSS de tal prueba?

Para hacerlo claro

Necesito atributos de estilo, ya que muchas herramientas como TinyMCE los usan y filtrar los atributos de estilo inofensivos dañaría significativamente la funcionalidad.

Así que prefiero pasar casos comunes eliminando todas las cosas que pueden usar @import, url, expression, etc. Y también me aseguro de que la sintaxis básica de CSS esté bien.

Responder

No, no es seguro debido a la vulnerabilidad de click-jacking.

Respuestas a la pregunta(4)

Su respuesta a la pregunta