Escapar de html en Java

¿Cómo puedo asegurarme de no escapar de algo dos veces?

He escuchado que una buena práctica para escapar de los valores a medida que se reciben de un formulario, y también de escape cuando se de la salida. De esa manera usted tiene dos posibilidades para coger algo.

Joel Spolsky Hacer que el Código Mirar Mal artículo — joelonsoftware.com/articles/Wrong.html – se trata exactamente este tipo de problema.
Me gustó mucho este artículo 🙂
Buena lectura, de hecho.

OriginalEl autor Kyle | 2010-01-27

3 Kommentare

  1. 18

    Supongo que estás usando JSP.

    Escapar durante pantalla sólo. No para el JSTL <c:> etiqueta es perfectamente adecuado. Se escapa de las entidades HTML por defecto. Se usa para mostrar cada controlada por el usuario de entrada, tales como la URL de la solicitud, los encabezados de solicitud y de solicitud de parámetros.

    E. g.

    <input type="text" name="foo" value="<c:out value="${param.foo}" />">

    Escapar durante la entrada de datos no es necesario. XSS no daña en raw código Java ni en bases de datos SQL. Por otro lado, también en vez de guardar los datos modificados en la base de datos, de modo que pueda ver lo que el usuario en realidad introducido, de modo que usted puede, si es necesario hacer acciones sociales en mailicious los usuarios.

    Si quieres saber lo que se escape durante la entrada, sería La inyección de SQL. En tal caso sólo tienes que utilizar PreparedStatement en lugar de regular Statement siempre que desea guardar cualquier controlada por el usuario de entrada en la base de datos.

    E. g.

    create = connection.prepareStatement("INSERT INTO user (username, password) VALUES (?, MD5(?))");
    create.setString(1, username);
    create.setString(2, password);
    create.executeUpdate();
    Ahora estoy convencido de que sólo escapar durante la visualización. Me pregunto por qué la Primavera tiene el defaultHtmlEscape para los formularios?
    marco de la hinchazón?
    No es que una opción para establecer «htmlescape» por defecto… y htmlescape significa que se va a escribir los valores en la final de formulario html escapado? Algo así como <input type=»cuadro de texto» valor=»algunos & gt; extraña & gt; caracteres»…>
    Es de hecho una cuestión de tiempo adecuado. Única forma de escapar al en realidad se necesita para hacerlo (es decir, durante el paso de uno a otro contexto donde puede llegar a ser malicioso). Que lo que estaban diciendo es que por desgracia recognizeable en buenos proyectos. Mejor lo que se puede hacer es revisar todo el código y eliminar cualquier innecesarias/mal-temporizado escapar. La buena suerte.
    El <c:> etiqueta no es perfectamente adecuado. Escapa todo de 5 caracteres, mientras que el OWASP la gente de la lista de muchos de los más de 5 caracteres que deben ser escapado. No confío en c:, y no se recomienda su uso en todos.

    OriginalEl autor BalusC

  2. 3

    Sólo debe html codificar cuando la salida de algo a un navegador. Esto evita que los ataques XSS. El tipo de escape que usted hace cuando usted recopilar datos de un formulario, antes de insertar en una base de datos es no la codificación html. Está escapando de base de datos especial de caracteres (hace mejor uso de consultas con parámetros). El propósito de esto es para evitar ataques de inyección SQL. Así que no hay doble codificación pasando.

    OriginalEl autor Asaph

  3. 2

    Contenido que es inofensiva en un contexto puede ser peligroso en otro contexto. La mejor manera de evitar los ataques de inyección es la de preparar el contenido antes de pasar a otro contexto. En el caso de html cambios de texto de su contexto cuando se pasa para el navegador. El servidor no representar el html, pero hace el navegador. Así que asegúrese de pasar no html malicioso en el navegador y la máscara antes de enviar.

    Otro argumento para ello es que podría ser posible que el código de ataque está montado dentro de la aplicación de dos o más entradas. Cada una de las entradas era inofensivo, pero juntos se puede llegar a ser peligroso.

    OriginalEl autor deamon

Kommentieren Sie den Artikel

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

Pruebas en línea