2011-06-24 21 views

Respuesta

3

En Internet Explorer, Firefox y otros navegadores puede incrustar JavaScript en CSS especificando una dirección URL javascript: en un comunicado url() CSS.

Incluso si logra filtrar estos, un atacante aún puede rediseñar completamente la página (incluyendo todo su contenido textual) con CSS avanzado. Por lo tanto, resulta extremadamente fácil engañar a los usuarios para que ejecuten acciones estúpidas, que es de lo que trata XSS. Por ejemplo, puede hacer que el botón Delete Account llene toda la ventana y cambie su texto a "Haga clic aquí para ganar 1000 $".

Puede lista blanca un grupo selecto de propiedades (text-*, font-*, color, background (sólo colores y degradados, no hay direcciones URL u otra materia de lujo)), pero usted tiene que rechazar todo lo que no coincide con estas restricciones .

+1

Posiblemente el peor IE nunca lo hizo. –

+7

@Amir Raminfar: Creo que sería una lista más corta para enumerar lo que IE hizo bien. Comenzaré: me permite descargar un navegador real. – Robert

+0

¿Existen pocas palabras clave CSS que pueda incluir en la lista negra para evitar la ejecución y llenar elementos con contenido nuevo? – Tom

0

Interesante pregunta. Me imagino que la hoja de estilo tiene la capacidad de eliminar u ocultar elementos que pueden ser un problema de seguridad. También puede insertar texto después de un determinado elemento usando: after y: before, por lo que debería tener cuidado al respecto.

Alternativamente, creo que debería incluir su hoja de estilos primero para que no cambien repentinamente todas sus fuentes o algo global.

+0

Incluir la hoja de estilos primero no tiene ningún efecto, simplemente puede definir reglas con mayor precedencia. – phihag

+0

Eso es lo que digo es algo bueno. Si el otro CSS es #foo div, entonces está claro que están apuntando a esos divs. Usamos este enfoque para que nuestro css predeterminado no cambie repentinamente. –

+0

Quiero decir: ** atacante ** puede definir reglas con mayor precedencia, simplemente pegando '!importante' antes de cada valor. – phihag

0

esos son viejos hacks pero aún pueden funcionar en un navegador más antiguo, por ejemplo, puedes poner el protocolo javascript en href attr.

http://ha.ckers.org/xss.html (búsqueda de estilo)

Cuestiones relacionadas