2012-02-18 8 views
5

lo encontré dentro de la aplicación "sinfonía CMS", que es muy pequeña:¿Es esta función suficiente para la detección de xss?

https://github.com/symphonycms/xssfilter/blob/master/extension.driver.php#L100

Y yo estaba pensando en robar y usarlo en mi propia aplicación para desinfectar cadena con HTML para su visualización. ¿Crees que hace un buen trabajo?

ps: Sé que hay un purificador de HTML, pero eso es enorme. Y prefiero algo menos permisivo, pero aún quiero que sea eficiente.


He estado probando contra las cuerdas de esta página: http://ha.ckers.org/xss.html. Pero si falla contra "XSS locator 2". No estoy seguro de cómo alguien puede usar esa cadena para hackear un sitio :)

+1

Dice: "[...] determinará si * potencialmente * [es] un ataque XSS". – Gumbo

Respuesta

7

No, no lo usaría. Hay muchos ataques diferentes que dependen del contexto en el que se insertan los datos. Una sola función no los cubriría a todos. Si observa detenidamente, en realidad solo hay cuatro pruebas:

// Set the patterns we'll test against 
$patterns = array(
    // Match any attribute starting with "on" or xmlns 
    '#(<[^>]+[\x00-\x20\"\'\/])(on|xmlns)[^>]*>?#iUu', 

    // Match javascript:, livescript:, vbscript: and mocha: protocols 
    '!((java|live|vb)script|mocha):(\w)*!iUu', 
    '#-moz-binding[\x00-\x20]*:#u', 

    // Match style attributes 
    '#(<[^>]+[\x00-\x20\"\'\/])style=[^>]*>?#iUu', 

    // Match unneeded tags 
    '#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>?#i' 
); 

No se ha comprobado nada más. Además de los ataques que estas pruebas no detectan (falso positivo), también podrían informar alguna entrada erróneamente como un ataque (falso negativo).

Por lo tanto, en lugar de tratar de detectar ataques XSS, solo asegúrese de utilizar una desinfección adecuada.

1

Creo que hace un buen trabajo para probar cadenas, al menos eso es lo que puedo decir según mis pruebas.

+1

no los desinfecta, esto es para probar solo – thelolcat

+0

Sí, eso es exactamente lo que quise decir. lo siento por cualquier confusión. – wadie

Cuestiones relacionadas