Joven hacker sonriendo

Proteger Aplicación de Ataques de XSS

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en C Sharp al proteger nuestra aplicación contra ataques de tipo cross site scripting. Éste es un tipo común de ataque que consiste en inyectar scripts en las entradas de la aplicación.

Necesidad

Codificar el código según el lenguaje correspondiente en C#

Contexto

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

  1. Se está desarrollando una aplicación en C# y se deben agregar mensajes de depuración.

  2. La salida de información del sistema debe estar codificada en el lenguaje correspondiente.[1]

Solución

Los ataques por Cross Site Scripting explotan las vulnerabilidades de las aplicaciones Web que fallan en validar y/o codificar las entradas embebidas en los datos de respuesta. Los usuarios maliciosos pueden inyectar scripts al lado del cliente a los datos de respuesta causando que el navegador de la victima ejecute códigos posiblemente maliciosos.[2]

La biblioteca Anti Cross Site Scripting de Microsoft[3] puede usarse para proteger a los usuarios de este tipo de ataques. Puede descargarse gratis en Microsoft Anti Cross Site Scripting.

Antes de comenzar a explicar como proteger una aplicación de los ataques de XSS es importante resaltar los vectores de ataque que un usuario malicioso puede usar para lanzar dichos ataques.

Idealmente, se deben ejecutar estas tareas en la etapa de diseño; sin embargo, aún es posible realizar el trabajo en las aplicaciones que ya se encuentren implementadas de esta forma:

  1. Revisar todo el código que produce salidas

  2. Determinar si la salida incluye parámetros no confiables de salida.

  3. Determinar si el contexto en el que se usa la entrada no confiable.

  4. Codificar la salida de manera apropiada.

El mejor criterio para determinar si la entrada es confiable es asumir que no lo es.

Ejemplos de entradas no confiables incluyen:

  1. Campos de formulario.

  2. Cadenas "Query".

  3. Contenidos de cookies.

  4. Encabezados HTTP.

Cuando se identifique que una entrada es no confiable, es importante determinar el método de codificación más apropiado. La siguiente tabla muestra los métodos de codificación asociados:

Método de codificación

Cuando se debe usar

HtmlEncode

Entrada no confiable usada en salida HTML excepto cuando se asigna a un atributo HTML

HtmlAttributeEncode

Entrada no confiable se usa en atributos HTML

XmlEncode

Entrada no confiable usada en salida XML excepto cuando se asigne a un atributo XML

XmlAttributeEncode

Salida no confiable usada en los atributos XML

UrlEncode

Entrada no confiable usada como un argumento URL

UrlPathEncode

Entrada no confiable usada como parte de un path URL

JavaScriptEncode

Entrada no confiable usada dentro de un contexto JavaScript

Para usarlo se requiere:

  1. Clic derecho en el explorador de soluciones en Visual Studio.

  2. Seleccionar "Add Reference"

  3. Seleccionar la pestaña "browse" y luego adicione AntiXSSLibrary.dll.

  4. Adicionar una directiva using Microsoft.Security.Application;

  5. Cambiar la forma en que se asigna la salida, por ejemplo de:

    ejemplo.cs.
    string out_Name = Request.QueryString["Name"];
    
  6. pasar a

    string out_Name = Encoder.HtmlEncode(Request.QueryString["Name"]);
    

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:

  1. default.asp contiene todas las instrucciones Asp del programa.

  2. default.aspx.cs contiene todas las instrucciones C# del programa.




Haz un comentario

Estado de los servicios - Términos de Uso