¿Cómo utilizo AWS WAF para bloquear la subida de archivos con extensiones específicas?
Quiero restringir la carga de archivos (solicitudes HTTP POST) con extensiones específicas a mi servidor web.
Descripción breve
Al analizar los datos POST de una solicitud HTTP, el contenido cargado puede ser de dos tipos:
- Datos de formulario
- Binario
Nota: AWS WAF inspecciona los primeros 8 KB (8192 bytes) del cuerpo de la solicitud. Para obtener información sobre solicitudes de mayor tamaño, consulte Handling oversize web request components in AWS WAF.
Para restringir la carga de archivos que utilicen una extensión de archivo específica, como .pdf, .docx o .exe, siga estos pasos:
- Cree una regla de lista de control de acceso web (ACL web) personalizada para inspeccionar la solicitud BODY.
- Cree una condición de coincidencia de expresiones regulares dentro de la regla. Utilice este patrón de expresiones regulares para configurar la regla de modo que restrinja varias extensiones de archivo.
- Defina BLOCK como acción de la regla.
- Defina la prioridad de la regla para que esta regla personalizada tenga una prioridad mayor que cualquier otra regla de ACL web que pudiera bloquearla.
- Valide que la regla bloquee correctamente la extensión de archivo específica.
Solución
Identifique el tipo de contenido que utilizan los datos POST
Los datos POST dentro de las solicitudes HTTP suelen utilizar datos de formulario o binarios.
- Los datos de formulario incluyen cualquier dato que un usuario introduzca en una página web (o «formulario HTML») que HTTP envía a un servidor web (o «publica» en él).
- Una carga binaria es cualquier cosa que no sea una carga de texto. Por ejemplo, una carga binaria puede ser un archivo.jpeg, un archivo.gzip o un archivo.xml. Esto incluye datos binarios genéricos, como los de una aplicación .pdf, una imagen.jpeg o una aplicación.zip. Para ver todos los tipos de extensiones de archivo, consulte Media types en el sitio web de la Internet Assigned Numbers Authority (IANA).
Para identificar el tipo de solicitud POST, consulte el valor Content-Type del encabezado HTTP POST. El siguiente ejemplo contiene un Content-Type de multipart/form-data:
Content-Type: multipart/form-data
Si el encabezado «Content-Type» tiene el valor «multipart/form-data», siga estos pasos para crear una regla:
-
Abra la consola de AWS WAF.
-
En el panel de navegación, en AWS WAF, seleccione ACL web.
-
En Región, seleccione la región de AWS en la que haya creado la ACL web.
Nota: Si ha configurado la ACL web para Amazon CloudFront, seleccione Global. -
Seleccione la ACL web. A continuación, seleccione la pestaña Reglas.
-
Seleccione la lista desplegable Agregar reglas y, a continuación, elija Add my own rules and rule groups.
-
En Tipo de regla, elija Generador de reglas.
-
En Nombre, introduzca un nombre para identificar la regla.
-
En Tipo, elija Regla regular.
-
En If a request, elija matches the statement. A continuación, rellene los siguientes campos de Instrucción
En Inspeccionar, seleccione Cuerpo.
En Content type, elija JSON.
En JSON match scope, elija Values.
En How AWS WAF should handle the request if the JSON in the request body is invalid, elija la opción correspondiente a su caso de uso.
En Content to inspect, seleccione Full JSON content.
En Match type, elija Matches regular expression.
En Regular expression, introduzca un patrón de expresiones regulares que coincida. Observe el siguiente ejemplo:(?:.pdf|.doc|.docx|.ppt)
-
(Opcional) En Text transformation, puede añadir una transformación de texto o mantener el valor None para estos campos.
-
En Overisize Handling, elija la opción correspondiente a su caso práctico.
-
En Acción, seleccione Bloquear.
-
Elija Agregar regla.
-
(Opcional) En Establecer la prioridad de las reglas, seleccione su regla y ajuste la prioridad. AWS WAF procesa las reglas en el orden en que aparecen. Para obtener más información, consulte Processing order of rules and rule groups in a web ACL.
-
Seleccione Guardar.
Valide que la regla funcione según lo esperado.
Si el encabezado «Content-Type» tiene un valor binario como «application/pdf» o «application/ppt», siga estos pasos para crear una regla:
-
Abra la consola de AWS WAF.
-
En el panel de navegación, en AWS WAF, seleccione ACL web.
-
En Región, seleccione la región de AWS en la que haya creado la ACL web. Nota: Si ha configurado la ACL web para Amazon CloudFront, seleccione Global.
-
Seleccione la ACL web. A continuación, seleccione la pestaña Reglas.
-
Seleccione la lista desplegable Agregar reglas y, a continuación, elija Add my own rules and rule groups.
-
En Tipo de regla, elija Generador de reglas.
-
En Nombre, introduzca un nombre para identificar la regla.
-
En Tipo, elija Regla regular.
-
En If a request, elija matches the statement. A continuación, rellene los siguientes campos de Instrucción:
En Inspect, elija Single header.
En Header field name, introduzca Content-Type.
En Match type, elija Matches regular expression.
En Regular expression, introduzca un patrón de expresiones regulares que coincida.
Consulte el siguiente ejemplo para los archivos .pdf y .jpeg:(?:pdf|jpeg)
-
(Opcional) En Text transformation, puede añadir una transformación de texto o mantener el valor None para estos campos.
-
En Acción, seleccione Bloquear.
-
Elija Agregar regla.
-
(Opcional) En Establecer la prioridad de las reglas, seleccione su regla y ajuste la prioridad. AWS WAF procesa las reglas en el orden en que aparecen. Para obtener más información, consulte Processing order of rules and rule groups in a web ACL.
-
Seleccione Guardar.
-
Valide que la regla funcione según lo esperado.
**Nota:**Para restringir la regla a una ruta URI de carga específica, utilice una instrucción AND dentro de la regla de ACL web que inspecciona la ruta.
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año