¿Pasar por alto el filtro XSS reemplazando caracteres?

1

¿Es posible omitir un filtro XSS que reemplaza a los caracteres maliciosos? He preparado este filtro:

searchTextField.replace(/</g, " ")
    .replace(/>/g, " ")
    .replace(/"/g, " ")
    .replace(/'/g, " ")
    .replace(/=/g, " ")
    .replace(/0\/g, " ")
    .replace(/\/g, " ")
    .replace(/\//g, " ")
    .replace(/  +/g, " ");

La salida aparece dentro de la etiqueta span como <span>TextHere</span> . Mi simple pregunta: ¿Se puede pasar por alto?

    
pregunta Shiri 11.11.2018 - 11:45
fuente

1 respuesta

2

Sí. Esto se puede explotar en algunos navegadores a través de las técnicas UTF-7, y otros navegadores antiguos a través de caracteres Unicode sustitutos (algunos navegadores antiguos le permiten usar caracteres "equivalentes" extraños para < y > , por ejemplo).

No utilice el filtrado de listas negras. El filtrado y la codificación son problemas difíciles y no debe intentar abordarlos usted mismo. Debe poder codificar de forma contextual el contenido para el tipo de contenido específico y el contexto al que está generando contenido. Considere usar una biblioteca como OWASP Reform , que admite PHP, Python, Java, ASP y ASP. Plataformas NET.

    
respondido por el Polynomial 11.11.2018 - 12:25
fuente

Lea otras preguntas en las etiquetas