Trabajar con condiciones de coincidencia de inyección de código SQL - AWS WAF, AWS Firewall Manager, y AWS Shield Advanced

Trabajar con condiciones de coincidencia de inyección de código SQL

aviso

Desde el 30 de septiembre de 2025, ya no se ofrecerá soporte para AWS WAF Classic.

nota

Esta es la documentación de AWS WAF Classic. Solo debe usar esta versión si creó recursos de AWS WAF, como reglas y ACL web, en AWS WAF antes de noviembre de 2019, y aún no los ha migrado a la versión más reciente. Para migrar las ACL web, consulte Migración de los recursos de AWS WAF a AWS WAF.

Para obtener la última versión de AWS WAF, consulte AWS WAF.

Los atacantes a veces insertan código SQL malicioso en solicitudes web con el objetivo de extraer datos de su base de datos. Para permitir o bloquear solicitudes web que parecen contener código SQL malicioso, cree una o varias condiciones de coincidencia de inyección de código SQL. Una condición de coincidencia de inyección de código SQL identifica la parte de las solicitudes web que desea que AWS WAF Classic inspeccione, como la ruta del URI o la cadena de consulta. Más adelante, cuando cree una ACL web, puede especificar si desea permitir o bloquear las solicitudes que parecen contener código SQL maliciosos.

Crear condiciones de coincidencia de inyecciones de código SQL

Al crear las condiciones de coincidencia de inyección de código SQL, debe especificar unos filtros que identifiquen la parte de las solicitudes web que desea que AWS WAF Classic inspeccione en busca de código SQL malicioso, como el URI o la cadena de consulta. Puede añadir más de un filtro a una condición de coincidencia de inyección de código SQL o puede crear una condición independiente para cada filtro. A continuación, se explica cómo afecta cada configuración al comportamiento de AWS WAF Classic:

  • Más de un filtro por condición de coincidencia de inyección de código SQL (recomendado): al añadir una condición de coincidencia de inyección de código SQL que contiene varios filtros a una regla y agregar la regla a una ACL web, una solicitud web solo debe coincidir con uno de los filtros de la condición de coincidencia de inyección de código SQL para que AWS WAF Classic permita o bloquee la solicitud en función de dicha condición.

    Por ejemplo, suponga que crea una condición de coincidencia de inyección de código SQL y que dicha condición contiene dos filtros. Un filtro indica a AWS WAF Classic que inspeccione el URI en busca de código SQL malicioso y el otro indica a AWS WAF Classic que inspeccione la cadena de consulta. AWS WAF Classic permite o bloquea solicitudes si es probable que contengan código SQL malicioso bien en el URI o bien en la cadena de consulta.

  • Un filtro por condición de coincidencia de inyección de código SQL: al agregar condiciones de coincidencia de inyección de código SQL independientes a una regla y agregar la regla a una ACL web, las solicitudes web deben cumplir con todas las condiciones para que AWS WAF Classic permita o bloquee las solicitudes en función de dichas condiciones.

    Supongamos que crea dos condiciones y que cada condición contiene uno de los dos filtros del ejemplo anterior. Al agregar las dos condiciones a la misma regla y agregar la regla a una ACL web, AWS WAF Classic permite o bloquea las solicitudes solo cuando es probable que el URI y la cadena de consulta contengan código SQL malicioso.

nota

Al agregar una condición de coincidencia de inyección de código SQL a una regla, también puede configurar AWS WAF Classic para que permita o bloquee las solicitudes web que no parecen contener código SQL malicioso.

Para crear una condición de coincidencia de inyección de código SQL
  1. Inicie sesión en la AWS Management Console y abra la consola de AWS WAF en https://console.aws.amazon.com/wafv2/.

    Si ve Cambiar a AWS WAF Classic en el panel de navegación, selecciónelo.

  2. En el panel de navegación, seleccione SQL injection (Inyección de código SQL).

  3. Elija Create condition.

  4. Especifique la configuración de filtro aplicable. Para obtener más información, consulte Valores que se especifican al crear o editar condiciones de coincidencia de inyecciones de código SQL.

  5. Elija Add another filter.

  6. Si desea añadir otro filtro, repita los pasos 4 y 5.

  7. Cuando haya terminado de añadir filtros, seleccione Create.

Valores que se especifican al crear o editar condiciones de coincidencia de inyecciones de código SQL

Al crear o actualizar una condición de coincidencia de inyección de código SQL, debe especificar los siguientes valores:

Nombre

Es el nombre de la condición de coincidencia de inyección de código SQL.

El nombre solo puede contener caracteres alfanuméricos (A-Z, a-z, 0-9) o los siguientes caracteres especiales: _-!"#`+*},./. No se puede cambiar el nombre de una condición después de crearla.

Parte de la solicitud para filtrar en

Elija la parte de cada solicitud web que desea que AWS WAF Classic inspeccione para detectar código SQL malicioso:

Encabezado

Un encabezado de solicitud específico, por ejemplo, el encabezado User-Agent o Referer. Si elige Header, indique el nombre del encabezado en el campo Header.

Método HTTP

El método HTTP indica el tipo de operación que la solicitud pide al origen que lleve a cabo. CloudFront admite los siguientes métodos: DELETE, GET, HEAD, OPTIONS, PATCH, POST y PUT.

Cadena de consulta

Es la parte de una URL que aparece después de un carácter ?, si hay alguno.

nota

En situaciones de coincidencia de inyecciones de código SQL, recomendamos elegir All query parameters (values only) (Todos los parámetros de consulta [solo valores]) en vez de Query string (Cadena de consulta) para Part of the request to filter on (Parte de la solicitud que se va a filtrar).

URI

La ruta del URI de la solicitud, que identifica el recurso, por ejemplo, /images/daily-ad.jpg. Esto no incluye la cadena de consulta ni los componentes del fragmento del URI. Para obtener información, consulte Identificador uniforme de recursos (URI): sintaxis genérica.

A menos que se especifique un valor en Transformation (Transformación), una URI no se normaliza y se inspecciona cuando AWS lo recibe del cliente como parte de la solicitud. Una transformación reformateará el URI según se especifique.

Cuerpo

Es la parte de una solicitud que contiene los datos adicionales que desea enviar a su servidor web como cuerpo de la solicitud HTTP, por ejemplo, los datos de un formulario.

nota

Si, por el contrario, elige Cuerpo para el valor de Parte de la consulta que se va a filtrar, AWS WAF Classic solo inspeccionará los primeros 8192 bytes (8 KB). Para permitir o bloquear solicitudes cuyo cuerpo tenga más de 8192 bytes, puede crear una condición de restricción de tamaño. (AWS WAF Classic obtiene la longitud del cuerpo de los encabezados de la solicitud). Para obtener más información, consulte Trabajar con condiciones de restricción de tamaño.

Parámetro de consulta único (solo valor)

Cualquier parámetro que haya definido como parte de la cadena de consulta. Por ejemplo, si la URL es "www.xyz.com?UserName=abc&SalesRegion=seattle", puede añadir un filtro o bien en el parámetro UserName o en el parámetro SalesRegion.

Si elige Single query parameter (value only) (Parámetro de consulta único [solo valor]), también debe especificar un Query parameter name (Nombre de parámetro de consulta). Este es el parámetro de la cadena de consulta que inspeccionará, como UserName o SalesRegion. La longitud máxima del Query parameter name (Nombre de parámetro de consulta) es de 30 caracteres. Query parameter name (Nombre de parámetro de consulta) no distingue entre mayúsculas y minúsculas. Por ejemplo, si especifica UserName como Query parameter name (Nombre de parámetro de consulta), este valor coincidirá con todas las variaciones de UserName como, por ejemplo, username o UsERName.

Todos los parámetros de consulta (solo valores)

Es igual que Parámetro de consulta único (solo valor), pero en lugar de inspeccionar el valor de un único parámetro, AWS WAF Classic inspecciona el valor de todos los parámetros de la cadena de consulta para detectar posible código SQL malicioso. Por ejemplo, si la URL es "www.xyz.com?UserName=abc&SalesRegion=seattle" y elige Todos los parámetros de consulta (solo valores), AWS WAF Classic activará una coincidencia si los valores de UserName o de SalesRegion contienen posible código SQL malicioso.

Encabezado

Si elige Encabezado para Parte de la consulta que se va a filtrar, seleccione un encabezado de la lista de encabezados comunes o escriba el nombre de un encabezado que desea que AWS WAF Classic inspeccione en busca de código SQL malicioso.

Transformación

Una transformación reformatea una solicitud web antes de que AWS WAF Classic inspeccione la solicitud. De este modo, se elimina parte del formato inusual que los atacantes utilizan en las solicitudes web con el objetivo de eludir AWS WAF Classic.

Solo puede especificar un único tipo de transformación de texto.

Las transformaciones pueden realizar las siguientes operaciones:

Ninguna

AWS WAF Classic no realiza ninguna transformación de texto en la solicitud web antes de inspeccionarla para la cadena en Valor que debe coincidir.

Cambiar a minúsculas

AWS WAF Classic convierte las mayúsculas (A-Z) en minúsculas (a-z).

Descodificar en HTML

AWS WAF Classic sustituye los caracteres codificados en HTML por caracteres sin codificar:

  • Sustituye " por &

  • Sustituye   por un espacio de no separación

  • Sustituye &lt; por <

  • Sustituye &gt; por >

  • Sustituye los caracteres representados con formato hexadecimal, &#xhhhh;, por los caracteres correspondientes

  • Sustituye los caracteres representados con formato decimal, &#nnnn;, por los caracteres correspondientes

Normalizar espacios en blanco

AWS WAF Classic sustituye los siguientes caracteres por un carácter de espacio (32 decimales):

  • \f, salto de página, 12 decimales

  • \t, pestaña, 9 decimales

  • \n, línea nueva, 10 decimales

  • \r, salto de línea, 13 decimales

  • \v, pestaña vertical, 11 decimales

  • espacio de no separación, 160 decimales

Además, esta opción sustituye varios espacios por un espacio.

Simplificar la línea de comandos

Para las solicitudes que contienen los comandos de línea de comandos del sistema operativo, utilice esta opción para realizar las siguientes transformaciones:

  • Eliminar los siguientes caracteres: \ " ' ^

  • Eliminar los espacios delante de los siguientes caracteres: / (

  • Sustituir los siguientes caracteres por un espacio: , ;

  • Sustituir varios espacios por un espacio

  • Convertir las mayúsculas (A-Z) en minúsculas (a-z)

Descodificar la URL

Descodifique una solicitud de URL codificada.

Agregar y eliminar filtros en una condición de coincidencia de inyecciones de código SQL

Puede añadir o eliminar filtros en una condición de coincidencia de inyección de código SQL. Para cambiar un filtro, añada uno nuevo y elimine el viejo.

Para añadir o eliminar filtros en una condición de coincidencia de inyección de código SQL
  1. Inicie sesión en la AWS Management Console y abra la consola de AWS WAF en https://console.aws.amazon.com/wafv2/.

    Si ve Cambiar a AWS WAF Classic en el panel de navegación, selecciónelo.

  2. En el panel de navegación, seleccione SQL injection (Inyección de código SQL).

  3. Elija la condición para la que desea añadir o eliminar filtros.

  4. Para añadir filtros, siga los siguientes pasos:

    1. Elija Add filter (Agregar filtro).

    2. Especifique la configuración de filtro aplicable. Para obtener más información, consulte Valores que se especifican al crear o editar condiciones de coincidencia de inyecciones de código SQL.

    3. Elija Add (Agregar).

  5. Para eliminar filtros, siga los siguientes pasos:

    1. Seleccione el filtro que desea eliminar.

    2. Elija Delete filter (Eliminar filtro).

Eliminar condiciones de coincidencia de inyecciones de código SQL

Si desea eliminar una condición de coincidencia de inyección de código SQL, primero debe eliminar todos los filtros de la condición y borrar la condición de todas las reglas que la utilizan, tal y como se describe en el siguiente procedimiento.

Para eliminar una condición de coincidencia de inyección de código SQL
  1. Inicie sesión en la AWS Management Console y abra la consola de AWS WAF en https://console.aws.amazon.com/wafv2/.

    Si ve Cambiar a AWS WAF Classic en el panel de navegación, selecciónelo.

  2. En el panel de navegación, seleccione SQL injection (Inyección de código SQL).

  3. En el panel Condiciones de coincidencia de inyección de código SQL, elija la condición de inyección de código SQL que desea eliminar.

  4. En el panel de la derecha, elija la pestaña Associated rules (Reglas asociadas).

    Si la lista de reglas que utilizan la condición de coincidencia de inyección de código SQL está vacía, vaya al paso 6. Si la lista contiene alguna regla, anótela y continúe con el paso 5.

  5. Para eliminar la condición de coincidencia de inyección de código SQL de las reglas que la utilizan, siga los siguientes pasos:

    1. En el panel de navegación, seleccione Reglas.

    2. Elija el nombre de una regla que utilice la condición de coincidencia de inyección de código SQL que desea eliminar.

    3. En el panel de la derecha, seleccione la condición de coincidencia de inyección de código SQL que desea eliminar de la regla y elija Remove selected condition (Eliminar condición seleccionada).

    4. Repita los pasos b y c para todas las demás reglas que utilizan la condición de coincidencia de inyección de código SQL que desea eliminar.

    5. En el panel de navegación, seleccione SQL injection (Inyección de código SQL).

    6. En el panel Condiciones de coincidencia de inyección de código SQL, elija la condición de inyección de código SQL que desea eliminar.

  6. Elija Delete (Eliminar) para eliminar la condición seleccionada.