Struts 2 codifican los parámetros de entrada para evitar XSS

Tengo una aplicación con Struts 2. Tiene algunos problemas con el Cross-site scripting (XSS) ataques. Quiero codificar algunas de las acciones de los parámetros de entrada en una manera similar a JSP <c:out value="${somevalue}"/> hay ningún enfoque sencillo para hacer esto en Struts 2? API de Java método haría bien.

EDITAR creo que este es uno – http://www.owasp.org/index.php/Talk:How_to_perform_HTML_entity_encoding_in_Java

Alguna experiencia con ella?

  • Debe especificar cómo el XSS son posibles, si usted está utilizando s:propiedad, a continuación, «<h1>hola!</h1>» pagará tan sólo que… que usted necesita para establecer el escape de la propiedad a false para que a la salida de html en la etiqueta de propiedad, al menos. s:la propiedad es muy popular por el resultado, de modo que debe de estar haciendo algo diferente?
  • No quiero cambiar el resultado, la aplicación es demasiado complejo para que.

3 Kommentare

  1. 10

    Puede utilizar

    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    
    ${fn:escapeXml(someValue)}

    También hay una Buena API JSoup

    Desinfectar los que no son de confianza HTML

    Problema

    Desea permitir que los usuarios que no son de confianza para el suministro de HTML para la salida en su sitio web (como por ejemplo la presentación de comentarios). Usted necesita para limpiar este código HTML para evitar cross-site scripting (XSS) ataques.

    Solución

    Utilizar el jsoup HTML Limpiador con una configuración especificada por un Blanca.

    String unsafe = 
          "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>";
    String safe = Jsoup.clean(unsafe, Whitelist.basic());
          //now: <p><a href="http://example.com/" >Link</a></p>

    Así, todo lo que básicamente hay que hacer es lo siguiente durante el procesamiento, el texto presentado:

    String text = request.getParameter("text");
    String safe = Jsoup.clean(text, Whitelist.basic());
    //Persist 'safe' in DB instead.

    Hay struts2securityaddons

    Este proyecto contiene la configuración, interceptores y el resto del código se utiliza para mejorar la seguridad de struts 2 aplicaciones.

    Ver también

  2. 6

    Escapar de los parámetros de entrada como un XSS prevención decir tiene varias disadvanteges, especialmente:

    • Usted no puede estar seguro sobre el destino de una de las entradas de datos, por lo tanto, usted no puede elegir la adecuada escapar esquema.
    • Escapar de los datos de entrada de las máscaras de la falta de salida de escape. Sin consistente escapar la salida, todavía puede pasar datos sin escape sin escape a la salida accidental.
    • Presencia de escapar complica el procesamiento de datos.

    Para ello sería mejor aplicar consistente salida de escape en su lugar.

    Ver también:

    • Sí, sería mejor para escapar de salida, pero es muy fácil perderse la salida de escape, tal como se aplica a varios lugares, mientras que la entrada de la ingesta es mucho más centralizado y rara vez modificado. Estoy seguro de que no necesito el lenguaje de marcado HTML en mi entrada.
    • Aún así, escapando de la entrada es de boceto. Lo que si los nuevos ataques de los métodos que se descubren — vas a reincode todo los datos que usted ha acumulado hasta el momento? También, usted asume que siempre quieren html de salida. Lo que si en el futuro desea emitir text/plain? usted tendrá todos estos funky html códigos de escape en su salida.
  3. 1

    No es fácil, fuera de la solución contra XSS con struts 2 etiquetas. OWASP ESAPI API cuenta con el apoyo para el escape que es muy útil, y que tienen las bibliotecas de etiquetas.

    Mi enfoque era básicamente para ampliar la stuts 2 etiquetas en las siguientes maneras.

    1. Modificar s:etiqueta de propiedad por lo que pueden tomar los atributos adicionales que indica qué tipo de escape es necesario (escapeHtmlAttribute=»true», etc.). Esto implica la creación de una nueva Propiedad y PropertyTag clases. La Propiedad de la clase de los usos de OWASP ESAPI api para el escape.
    2. Cambio freemarker plantillas para utilizar la nueva versión de s:la propiedad y a establecer el escape.

    Si usted no desea modificar las clases en el paso 1, otro enfoque sería para la importación de la ESAPI etiquetas en el freemarker plantillas y escapar como sea necesario. Entonces, si usted necesita usar un s:propiedad de la etiqueta en la JSP, se envuelve con y ESAPI etiqueta.

    He escrito una explicación más detallada aquí.

    http://www.nutshellsoftware.org/software/securing-struts-2-using-esapi-part-1-securing-outputs/

    Estoy de acuerdo escapar de las entradas no es lo ideal.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea