Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Por qué AWS WAF bloquea mi solicitud de carga legítima?
Quiero cargar (POST) un archivo que utiliza una extensión bloqueada por AWS WAF.
Descripción corta
AWS WAF puede bloquear una solicitud POST por uno de los siguientes motivos:
- El archivo supera el tamaño máximo del cuerpo de la solicitud que AWS WAF puede inspeccionar. AWS WAF tiene cuotas fijas de tamaño para las inspecciones corporales.
- Las reglas de inyección de código SQL y scripting entre sitios (XSS) son sensibles a los archivos con caracteres aleatorios en sus metadatos. Estos caracteres aleatorios pueden invocar reglas de la lista de control de acceso web (ACL web). Esto se debe a su similitud con una firma de inyección de código SQL o XSS real en AWS WAF.
En primer lugar, revisa las reglas habituales que pueden bloquear la carga de archivos. Si la carga no está bloqueada por una regla habitual, plantéate otras opciones para permitir los archivos bloqueados.
Las siguientes reglas suelen bloquear la carga de archivos:
- SQLi_BODY
- CrossSiteScripting_BODY
- WindowsShellCommands_BODY
- GenericLFI_BODY
- SizeRestrictions_BODY
Resolución
La carga de archivos está bloqueada por las reglas SQLi_BODY y CrossSiteScripting_BODY
Consulta la información de la regla en el campo terminatingRuleMatchDetails en los registros detallados de AWS WAF.
Nota: El campo terminatingRuleMatchDetails solo se rellena para los ataques SQLi_BODY y CrossSiteScripting_BODY.
A continuación se muestra un ejemplo de matchedData para CrossSiteScripting_BODY:
"terminatingRuleMatchDetails": [{ "conditionType": "XSS", "location": "BODY", "matchedData": [ "
A continuación se muestra un ejemplo de matchedData para SQLi_BODY:
"terminatingRuleMatchDetails": [{ "conditionType": "SQL_INJECTION", "location": "BODY", "matchedData": [ ")", "*", "(", "0" ]
Para solucionar el bloqueo de la carga mediante SQLi_BODY o CrossSiteScripting_BODY, elige una de las siguientes opciones.
Agregación de direcciones IP conocidas a una lista segura
Si conoces el intervalo de direcciones IP que accede a tu aplicación, utiliza las condiciones de coincidencia de IP. Esto agrega las direcciones IP a una regla de lista segura.
Uso de una lista segura con una condición de coincidencia
Utiliza una lista segura con una condición de coincidencia de cadena o expresión regular para permitir la solicitud. Crea una lista segura basada en una URI, encabezados HTTP o una frase asociada al cuerpo de los archivos de AWS WAF.
Usa identificadores únicos en tu lista segura para identificar las solicitudes que pueden considerarse legítimas.
Para crear una lista segura, crea una nueva regla personalizada. Esta regla bloquea los vectores XSS o SQLi con una condición de excepción. La condición se basa en los datos coincidentes de los atributos de solicitud válidos para la carga. Anula la acción para las reglas específicas dentro de los grupos de reglas administradas que provocan el falso positivo. Para ello, define SQLi_BODY y CrossSiteScripting_BODY en Count.
Para crear esta regla personalizada, sigue estos pasos:
- Abre la consola de AWS WAF.
- En el panel de navegación, selecciona AWS WAF.
- Elige Paquetes de protección y recursos.
- Busca tu paquete de protección y elige Ver y editar junto a Reglas.
- En el panel derecho, selecciona Agregar reglas.
Selecciona Regla personalizada y haz clic en Siguiente.
Vuelve a seleccionar Regla personalizada y haz clic en Siguiente. - Actualiza la Acción de la regla a BLOQUEAR.
- Introduce el nombre de la regla.
- En Si una solicitud, expande el menú desplegable y elige cumple todas las instrucciones (AND).
- En Instrucción 1, completa lo siguiente:
En Inspeccionar, elige Tiene una etiqueta.
En Instrucción, elige Etiqueta.
En Clave de coincidencia, introduce la etiqueta para la regla que crea el falso positivo. Por ejemplo, si la regla CrossSiteScripting_BODY crea el falso positivo, introduce awswaf:managed:aws:core-rule-set:CrossSiteScripting_Body. - En Instrucción 2, completa lo siguiente: en Inspeccionar, elige Cuerpo.
En Instrucción, elige Gestión de componentes de gran tamaño en Continuar.
En Tipo de coincidencia, elige Contiene la cadena.
En Cadena que debe coincidir, indica el valor que desees que cumpla la regla.
(Opcional) En Transformación de texto, elige Transformación de texto o Ninguna.
Amplía Configuración de la regla, en Negar instrucción (NOT), selecciona Negar los resultados de la instrucción. - Selecciona Crear regla.
- Para establecer la prioridad de las reglas, selecciona Editar orden de reglas en el panel derecho y arrastra esta regla hasta debajo del grupo de reglas administradas que bloquea la solicitud. Esto establece la etiqueta de regla administrada en primer lugar para la inspección del grupo de reglas. A continuación, AWS WAF utiliza la etiqueta en la siguiente prioridad de regla.
- Selecciona Guardar orden de reglas.
Nota: Se recomienda probar las reglas en un entorno no productivo con la Acción definida como Contar. Para evaluar la regla, utiliza métricas de Amazon CloudWatch combinadas con solicitudes de muestra de AWS WAF o registros de AWS WAF. Cuando la regla se ejecute según lo previsto, cambia la acción a Bloquear.
Cargas de archivos bloqueadas por las reglas WindowsShellCommands_BODY, GenericLFI_BODY o SizeRestrictions_BODY
Crea un archivo HTTP Archive (HAR) cuando se cargue el archivo. A continuación, revísalo para las reglas WindowsShellCommands_BODY, GenericLFI_BODY o SizeRestrictions_BODY.
Para permitir los falsos positivos para WindowsShellCommands_BODY, GenericLFI_BODY o SizeRestrictions_BODY, primero define la regla correspondiente como Contar. Consulta las instrucciones en Overriding a rule group's evaluation result to Count (Anulación del resultado de la evaluación de un grupo de reglas por Contar).
A continuación, crea una regla personalizada para la regla administrada que provoca el falso positivo:
- Abre la consola de AWS WAF.
- En el panel de navegación, selecciona AWS WAF.
- Elige Paquetes de protección y recursos.
- Busca tu paquete de protección y elige Ver y editar junto a Reglas.
- En el panel derecho, selecciona Agregar reglas.
Selecciona Regla personalizada y haz clic en Siguiente.
Vuelve a seleccionar Regla personalizada y haz clic en Siguiente. - Actualiza la Acción de la regla a BLOQUEAR.
- Introduce el nombre de la regla.
- En Si una solicitud, expande el menú desplegable y elige cumple todas las instrucciones (AND).
- En Instrucción 1, completa lo siguiente:
En Inspeccionar, elige Tiene una etiqueta.
En Instrucción, elige Etiqueta.
En Clave de coincidencia, introduce la etiqueta para la regla que crea el falso positivo. Por ejemplo, si la regla WindowsShellCommands_BODY crea el falso positivo, introduce awswaf:managed:aws:windows-os:WindowsShellCommands_Body. - En Instrucción 2, completa lo siguiente:
En Inspeccionar, elige Ruta de URI. En Instrucción, para Tipo de coincidencia, selecciona Coincide exactamente con la cadena.
En Cadena que debe coincidir, indica la ruta URI en la que se realizan las solicitudes.
(Opcional) En Transformación de texto, elige Transformación de texto o Ninguna.
Amplía Configuración de la regla, en Negar instrucción (NOT), selecciona Negar los resultados de la instrucción. - Selecciona Crear regla.
- Para establecer la prioridad de las reglas, selecciona Editar orden de reglas en el panel derecho y arrastra esta regla hasta debajo del grupo de reglas administradas que bloquea la solicitud.
- Selecciona Guardar orden de reglas.
Nota: Se recomienda probar las reglas en un entorno no productivo con la Acción definida como Contar. Para evaluar la regla, utiliza métricas de CloudWatch combinadas con solicitudes de muestra de AWS WAF o registros de AWS WAF. Cuando la regla se ejecute según lo previsto, cambia la acción a Bloquear.
Opciones adicionales para permitir archivos bloqueados
Nota: Las reglas se procesan en el orden en que aparecen en la lista. Para seguir las siguientes prácticas recomendadas, reordena las prioridades de las reglas según sea necesario.
Elige el mejor método para tu caso práctico:
- Aplica la exclusión selectiva con una instrucción de regla de coincidencia de cadena de AWS WAF o una condición de coincidencia de cadena de la versión clásica de AWS WAF. Agrega frases específicas asociadas con el cuerpo de los archivos a tu lista segura. Por ejemplo: Si aparecen falsos positivos en una ruta URI específica, agrega la ruta a tu lista segura.
- Usa un dominio independiente para cargar archivos. Comprueba si se trata de una opción rentable para tu caso práctico.
- Analiza (limpie) archivos e imágenes en busca de código y datos incrustados. Puedes realizar esta acción en el lado del cliente antes de cargar los archivos. También puedes realizar esta acción en el backend después de cargar los archivos si creas una regla de exclusión.
- Comprime los archivos antes de cargarlos.
Nota: Asegúrate de no comprimir los archivos malintencionados. - Si la carga se produce desde un intervalo de direcciones IP conocidas, agrega esas direcciones IP a tu lista segura.
- Utiliza la codificación base64 para codificar todos los datos de imagen, de modo que AWS WAF no invoque XSS ni SQLi en las imágenes.
Nota: Asegúrate de no codificar imágenes malintencionadas. - Implementa técnicas de optimización de imágenes, como la eliminación de fragmentos o la aleatorización de bits.
- Etiquetas
- AWS WAF
- Idioma
- Español

Contenido relevante
- preguntada hace 10 meses
- preguntada hace 5 meses
- preguntada hace un año
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace un año
- preguntada hace 3 meses