Iniciar comprobación de URL
La comprobación de URL de inicio examina las URL de las solicitudes entrantes y bloquea el intento de conexión si la URL no cumple los criterios especificados. Para cumplir los criterios, la dirección URL debe coincidir con una entrada de la lista URL de inicio, a menos que esté habilitado el parámetro Forzar cierre de URL. Si habilita este parámetro, un usuario que haga clic en un vínculo de su sitio web estará conectado al destino de ese enlace.
El propósito principal de la comprobación de URL de inicio es evitar intentos repetidos de acceder a URL aleatorias en un sitio web, (navegación forzosa) a través de marcadores, enlaces externos o saltar a páginas escribiendo manualmente las URL para omitir las páginas necesarias para llegar a esa parte del sitio web. La exploración forzada se puede utilizar para desencadenar un desbordamiento de búfer, encontrar contenido al que los usuarios no tenían intención de acceder directamente o encontrar una puerta trasera en áreas seguras del servidor web. El Web App Firewall aplica la ruta de acceso o lógica dada de un sitio web al permitir el acceso solo a las URL configuradas como direcciones URL de inicio.
Si utiliza el asistente o la GUI, en el cuadro de diálogo Modificar comprobación de URL de inicio, en la ficha General puede habilitar o inhabilitar acciones Bloquear, Registro, Estadísticas, Aprendizaje y los siguientes parámetros:
- Exigir cierre de URL. Permita que los usuarios accedan a cualquier página web de su sitio web haciendo clic en un hipervínculo en cualquier otra página de su sitio web. Los usuarios pueden navegar a cualquier página de su sitio web a la que se pueda acceder desde la página principal o cualquier página de inicio designada haciendo clic en hipervínculos. Nota: La función de cierre de URL permite que cualquier cadena de consulta se agregue y envíe con la URL de acción de un formulario web enviado mediante el método HTTP GET. Si los sitios web protegidos utilizan formularios para acceder a una base de datos SQL, asegúrese de que tiene habilitada y configurada correctamente la comprobación de inyección SQL.
- Cierre de URL sin sesión. Desde el punto de vista del cliente, este tipo de cierre de URL funciona exactamente de la misma manera que el cierre de URL estándar, consciente de la sesión, pero utiliza un token incrustado en la URL en lugar de una cookie para rastrear la actividad del usuario, que consume considerablemente menos recursos. Cuando el cierre de URL sin sesión está habilitado, Web App Firewall agrega una etiqueta “as_url_id” a todas las URL que se encuentran en el cierre de URL. Nota: Al habilitar sin sesión (Cierre de URL sin sesión), también debe habilitar el cierre regular de URL ( Exigir cierre de URL) o el cierre de URL sin sesión no funciona.
-
Validar encabezado de referer. Compruebe que el encabezado Referer en una solicitud que contenga datos de formulario web de su sitio web protegido en lugar de otro sitio web. Esta acción verifica que su sitio web, no un atacante externo, es el origen del formulario web. Al hacerlo, se protege contra falsificaciones de solicitudes entre sitios (CSRF) sin necesidad de etiquetar formularios, lo que requiere más CPU que las comprobaciones de encabezados. El Web App Firewall puede manejar el encabezado HTTP Referer de una de las cuatro maneras siguientes, en función de la opción que seleccione en la lista desplegable:
- Off: No valida el encabezado Referer.
- If-Present—Validar el encabezado Referer si existe un encabezado Referer. Si se encuentra un encabezado Referer no válido, la solicitud genera una infracción de encabezado referer-referer-header. Si no existe un encabezado Referer, la solicitud no genera una infracción de encabezado referer-referer-referer-header. Esta opción permite al Web App Firewall realizar la validación del encabezado del referer en las solicitudes que contienen un encabezado del referer, pero no bloquear las solicitudes de usuarios cuyos exploradores no establecen el encabezado del referer o que utilizan proxies web o filtros que eliminan ese encabezado.
- Siempre excepto URL de inicio: Valide siempre el encabezado Referer. Si no hay encabezado Referer y la URL solicitada no está exenta por la regla de relajación StartURL, la solicitud genera una infracción del encabezado de referencia. Si el encabezado Referer está presente pero no es válido, la solicitud genera una infracción de encabezado referer-referer-header.
- Siempre excepto primera solicitud: Valide siempre el encabezado del referer. Si no hay encabezado de referer, solo se permite la URL a la que se accede primero. Todas las demás URL están bloqueadas sin un encabezado de referer válido. Si el encabezado Referer está presente pero no es válido, la solicitud genera una infracción de encabezado referer-referer-header.
Una configuración de URL de inicio, Exención de URL de cierre de comprobaciones de seguridad, no está configurada en el cuadro de diálogo Modificar comprobación de URL de inicio, pero está configurada en la ficha Configuración del perfil. Si está habilitada, esta configuración indica al Web App Firewall que no ejecute más comprobaciones basadas en formularios (como Scripting entre sitios e inspección de SQL Injection) en direcciones URL que cumplan los criterios de cierre de URL.
Nota
Aunque la comprobación del encabezado del referer y la comprobación de seguridad de la URL de inicio comparten la misma configuración de acción, es posible violar la comprobación del encabezado del referer sin violar la comprobación de URL de inicio. La diferencia es visible en los registros, que registran violaciones de encabezado de referencia de registro por separado de violaciones de comprobación de URL de inicio.
La configuración del encabezado Referer (OFF, IF-Present, AlwaysExceptStarTurls y AlwaysExceptFirstRequest) se organiza en orden de menos restrictiva a la más restrictiva y funciona de la siguiente manera:
OFF:
- Cabecera de referencia No marcada.
Presente:
- La solicitud no tiene encabezado de referer -> Se permite la solicitud.
- La solicitud tiene el encabezado del referer y la URL del referer está en el cierre de URL -> Se permite la solicitud.
- La solicitud tiene el encabezado del referer y la URL del referer no está en el cierre de URL -> La solicitud está bloqueada.
AlwaysExceptStarTurls:
- La solicitud no tiene encabezado de referer y la URL de solicitud es una URL de inicio -> Se permite la solicitud.
- La solicitud no tiene encabezado de referer y la URL de solicitud no es una URL de inicio ->La solicitud está bloqueada.
- La solicitud tiene el encabezado del referer y la URL del referer está en el cierre de URL -> Se permite la solicitud.
- La solicitud tiene el encabezado del referer y la URL del referer no está en el cierre de URL -> La solicitud está bloqueada.
AlwaysExceptFirstRequest:
- La solicitud no tiene encabezado de referer y es la primera URL de solicitud de la sesión -> Se permite la solicitud.
- La solicitud no tiene encabezado de referer y no es la primera URL de solicitud de la sesión -> La solicitud está bloqueada.
- La solicitud tiene encabezado de referer y es la primera URL de solicitud de la sesión o está en cierre de URL -> Se permite la solicitud.
- La solicitud tiene encabezado de referer y no es la primera URL de solicitud de la sesión ni está en el cierre de URL -> La solicitud está bloqueada.
Si utiliza la interfaz de línea de comandos, puede introducir los siguientes comandos para configurar la comprobación de URL de inicio:
set appfw profile <name> -startURLAction [block] [learn] [log] [stats] [none]
set appfw profile <name> -startURLClosure ([ON] | [OFF])
set appfw profile <name> -sessionlessURLClosure ([ON] | [OFF])
set appfw profile <name> -exemptClosureURLsFromSecurityChecks ([ON] | [OFF)
set appfw profile <name> -RefererHeaderCheck ([OFF] | [if-present] | [AlwaysExceptStartURLs] | [AlwaysExceptFirstRequest])
Para especificar relajantes para la comprobación de URL de inicio, debe usar la GUI. En la ficha Comprobaciones del cuadro de diálogo Modificar comprobación de URL de inicio, haga clic en Agregar para abrir el cuadro de diálogo Agregar relajación de comprobación de URL de inicio o seleccione una relajación existente y haga clic en Abrir para abrir el cuadro de diálogo Modificar relajación de comprobación de URL de inicio. Cualquiera de los dos cuadros de diálogo proporciona las mismas opciones para configurar una relajación.
A continuación se presentan ejemplos de relajación de comprobación de URL de inicio:
-
Permitir a los usuarios acceder a la página principal en www.example.com:
^http://www[.]example[.]com$ <!--NeedCopy-->
-
Permitir a los usuarios acceder a todas las páginas web de formato HTML estático (.htm y.html), HTML analizado por servidor (.htp y.shtml), PHP (.php) y Microsoft ASP (.asp) en www.example.com:
^http://www[.]example[.]com/([0-9A-Za-z][0-9A-Za-z_-]\*/)\* [0-9A-Za-z][0-9A-Za-z_.-]*[.](asp|htp|php|s?html?)$ <!--NeedCopy-->
-
Permitir a los usuarios acceder a páginas web con nombres de ruta o nombres de archivo que contengan caracteres no ASCII en www.example-español.com:
^http://www[.]example-espaxC3xB1ol[.]com/(([0-9A-Za-z]|x[0-9A-Fa-f][0-9A-Fa-f])([0-9A-Za-z_-]|x[0-9A-Fa-f][0-9A-Fa-f])\*/)\* ([0-9A-Za-z]|x[0-9A-Fa-f][0-9A-Fa-f])([0-9A-Za-z_-]|x[0-9A-Fa-f][0-9A-Fa-f])*[.](asp|htp|php|s?html?)$ <!--NeedCopy-->
Nota: En la expresión anterior, cada clase de caracteres se ha agrupado con la cadena x[0-9a-FA-F][0-9A-Fa-f], que coincide con todas las cadenas de codificación de caracteres construidas correctamente pero no permite caracteres de barra invertida que no estén asociados a una cadena de codificación de caracteres UTF-8. La barra invertida doble () es una barra invertida escapada, que indica al Web App Firewall que la interprete como una barra invertida literal. Si solo incluye una barra invertida, el Web App Firewall interpretaría el siguiente corchete izquierdo ([) como un carácter literal en lugar de abrir una clase de caracteres, lo que rompería la expresión.
-
Permitir a los usuarios acceder a todos los gráficos en formato GIF (.gif), JPEG (.jpg y.jpeg) y PNG (.png) en www.example.com:
^http://www[.]example[.]com/([0-9A-Za-z][0-9A-Za-z_-]\*/)\* [0-9A-Za-z][0-9A-Za-z_.-]*[.](gif|jpe?g|png)$ <!--NeedCopy-->
-
Permitir a los usuarios acceder a los scripts CGI (.cgi) y PERL (.pl), pero solo en el directorio CGI-BIN:
^http://www[.]example[.]com/CGI-BIN/[0-9A-Za-z][0-9A-Za-z_.-]*[.](cgi|pl)$ <!--NeedCopy-->
-
Permitir a los usuarios tener acceso a Microsoft Office y otros archivos de documento en el directorio docsarchive:
^http://www[.]example[.]com/docsarchive/[0-9A-Za-z][0-9A-Za-z_-.]*[.](doc|xls|pdf|ppt)$ <!--NeedCopy-->
Nota
De forma predeterminada, todas las direcciones URL de Web App Firewall se consideran expresiones regulares.
Precaución: Las expresiones regulares son potentes. Especialmente si no está completamente familiarizado con las expresiones regulares con formato PCRE-format, compruebe las expresiones regulares que escriba. Asegúrese de que definen exactamente la URL que quiere agregar como excepción, y nada más. El uso descuidado de comodines, y especialmente de la combinación de metacarácter/comodín de punto ( .*), puede tener resultados que no quiera, como bloquear el acceso al contenido web que no tenía intención de bloquear o permitir un ataque que la comprobación de URL de inicio habría bloqueado de otro modo.
Sugerencia
Puede agregar el -y- a la lista permitida de palabras clave SQL para el esquema de nomenclatura de URL. Por ejemplo, https://FQDN/bread-and-butter.