El mejor enfoque para eliminar la vulnerabilidad de XSS

3

He estado desarrollando una aplicación Webobjects, y descubrí que mi aplicación es vulnerable a XSS a través de la URL, pero no cuando la entrada maliciosa como <script>alert("hi")</script> se ingresa en los campos de formulario.

Por lo tanto, actualmente he empleado una técnica de reescritura de URL en el servidor web apache para resolver este problema.

He manejado las siguientes palabras clave de javascript: src onload onmouseover onkeypress onfocus alert

No sé lo suficiente sobre XSS.

Quiero saber de los expertos aquí, ¿es este el enfoque correcto para resolver XSS cuando la entrada a los campos del formulario no muestra vulnerabilidad?

Por favor, sugiera.

    
pregunta Novice User 20.04.2012 - 17:49
fuente

2 respuestas

7

No. No debe intentar arreglar XSS mediante la reescritura de URL en su servidor web Apache. Esa no es una buena manera de hacerlo, ya que el resultado será frágil en el mejor de los casos. En particular, si sigues con tu enfoque actual, es muy probable que aún existan formas astutas de explotar el XSS.

En cambio, si la aplicación web tiene agujeros XSS, arregla la aplicación web maldita . Este es un problema de seguridad de la aplicación; Tienes que arreglarlo arreglando la aplicación. Tratar de arreglar las cosas externamente probablemente tendrá una fuga como un tamiz.

P.S. Su lista de palabras clave es insuficiente. Ha creado una lista negra, y como cualquier otra lista negra, su lista negra es inevitablemente incompleta. Te estás perdiendo algunas cosas (* tos * onerror * tos *). No voy a tratar de proporcionarle una lista más completa, porque el enfoque está fundamentalmente roto y en lugar de seguir con el enfoque y tratar de extender su lista de atributos para filtrar, debe deshacerse del enfoque actual por completo y solucione el problema en su origen.

    
respondido por el D.W. 21.04.2012 - 07:19
fuente
7

Hay un buen recurso de OWASP: XSS (Cross Site Scripting) Prevention Cheat Sheet

Básicamente, debe validar todos los datos de entrada utilizando el enfoque de lista blanca (definir patrones válidos, no patrones no válidos como lo está intentando hacer en este momento) Y debe codificar todos los datos en la salida utilizando el esquema de codificación correcto para el contexto dado (HTML, JavaScript , Atributo HTML).

La codificación correcta es bastante difícil y no deberías hacerlo solo. En su lugar, debe utilizar la biblioteca como Microsoft AntiXSS Library o OWASP ESAPI .

También puede usar ModSecurity (u otro WAF) con las reglas de detección correctas (es decir, ModSecurity Core Rule Set ), pero tenga en cuenta que esta no debería ser la única solución que use.

    
respondido por el pgolen 20.04.2012 - 18:27
fuente

Lea otras preguntas en las etiquetas