Joven hacker sonriendo

Establecer Content-Type y Charset

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en C Sharp al establecer las cabeceras content-type y charset de una aplicación desarrollada para evitar ataques que utilizan diferentes codificaciones, como el HTTP Request Smuggling.

Necesidad

Establecer Content-Type y Charset en C#.

Contexto

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

  1. Se está desarrollando en C#.

  2. Se necesita establer la cabecera Content-Type[1],[2].

  3. Se necesita establecer la propiedad Charset de la cabecera Content-Type[3].

Solución

  1. Las aplicaciones son rara vez probadas contra los exploits que usan Unicode, y sin embargo, muchas son vulnerables al mismo tipo de problemas que permite a un atacante realizar un "HTTP REQUEST SMUGGLING". El "HTTP REQUEST SMUGGLING" le permite a un atacante evadir los controles de un sistema, usando codificaciones diferentes, para que dos sistemas (usualmente, un WAF y el servidor WEB) perciban peticiones HTTP diferentes.

    La forma canónica significa la forma más simple o más estándar de algo. El proceso de canonizar las solicitudes se encarga de abordar la forma en que los sistemas transforman los datos de una forma a otra.

    En sí, canonizar es convertir algo de una representación a una forma más simple. Las aplicaciones Web deben lidiar con muchos procesos de canonización desde la codificación de la URL hasta la traducción de las IP. Cuando se toman decisiones de seguridad basándose en datos canonizados, la aplicación debe ser capaz de lidiar con entradas inesperadas de manera segura.

    Para evitar los ataques que se aprovechan de la canonización, se debe seleccionar una forma canónica y todas las entradas de usuario deben ser canonizadas a esa forma antes de tomar decisiones de autorización. Se debe realizar un proceso de ethical hacking después de que se ha realizado la decodificación.

    Se recomienda verificar que la codificación usada está soportada para cada símbolo que se presenta. Para definir una forma canónica, en HTTP definimos el Content-Type. En C# tenemos la propiedad HttpResponse.ContentType, [4] que permite establecer u obtener el tipo MIME del flujo de salida. Se encuentra en el espacio de nombres System.Web en el ensamblado System.Web de System.Web.dll.

    ejemplo.cs
    // Establece el contet type.
    Response.ContentType = "image/jpeg";
    
  2. De manera similar, podemos definir el Character-Set usado. En C# se cuenta con HttpResponse.Charset que permite establecer u obtener el tipo MIME del flujo de salida.

    if (Response.Charset == "utf-8")
     {
       // ...
     }
    



Haz un comentario

Estado de los servicios - Términos de Uso