Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Definir Character-Set y Content-Type en Páginas JSP

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en Java al definir los parámetros Charset y Content-Type en páginas JSP. Éstos parámetros permiten definir el conjunto de caracteres utilizados por el navegador y ayudan a prevenir el XSS.

Necesidad

Definir Character-Set y Content-Type explícito en páginas JSP para Java EE.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación web usando la tecnología de JSP de Java.

  2. Se dispone de un contenedor de servlets.

  3. Se está utilizando una versión previa a Java EE 6.

    • Si se está utilizando Java EE 6 o superior, en vez de JSP se recomienda utilizar Facelets

Solución

La codificación de carácteres, character encoding, o charset es el método que permite convertir un carácter de una lengua natural (español, inglés, francés, italiano, entre otros), en un símbolo de otro sistema de representación (números, secuencia de comandos, lenguaje máquina). Básicamente, definen la forma en la que se codifica un carácter dado en un símbolo en otro sistema de representación [1].

Por su parte, el Content-Type es un encabezado que especifica el tipo de contenido de una petición HTTP. Entonces, el Content-Type sirve para decirle al servidor la manera en que determinada secuencia de carácteres se mostrará en el navegador del cliente.

Aunque el charset no es obligatorio, se debería incluir en cualquier página web para indicar de forma expresa la codificación de carácteres utilizada.

También se recomienda su uso para mitigar ataques de intrucción que buscan aprovechar la carencia del charset en algunas páginas web.

En esta solución se abordará la manera de definir el charset content-type en una página desplegada en JSP.

  1. Para evitar que el navegador web tenga que adivinar el conjunto de caracteres usados, se recomienda especificarlo directamente, en especial para archivos generados dinámicamente.

  2. Las consecuencias de no usar un Char-Set específico pueden resultar en vulnerabilidades tipo XSS.

  3. En JSP, el tag usado para especificar el Char-Set es @page con el atributo contentType. Ejemplo:

    jsp.html
    1
    2
    3
    4
    5
    6
    7
    <%@ page contentType="text/html; charset=iso-8859-1"%>
    <%
      String s = "Texto codificado";
      out.println(s);
    %>
    <br />
    <%= s %>
    
  4. Algunos de los Chartset definidos son los siguientes:

    • ISO-8859-1

    • ISO-8859-15

    • windows-1252

    • US-ASCII

    • UTF-8

    • EUC-JP

    • Shift_JIS

    • EUC-KR

    • KOI8-R

    • TIS-620

    • Big5

    • Big5-HKSCS

  5. Por último, los charset no son case sensitive, es decir, pueden ser definidos tanto en mayúscula como en letra minúscula.




Haz un comentario

Estado de los servicios - Términos de Uso