Comprobar URL de inicio
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 URL debe coincidir con una entrada de la lista de URL de inicio, a menos que el parámetro Forzar cierre de URL esté habilitado. Si habilitas este parámetro, un usuario que haga clic en un enlace de tu sitio web se conectará al destino de ese enlace.
El objetivo principal de la comprobación de la URL de inicio es evitar intentos repetidos de acceder a URL aleatorias de un sitio web (navegación forzada) a través de marcadores o 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 navegación forzada se puede utilizar para provocar un desbordamiento del búfer, encontrar contenido al que los usuarios no tenían previsto acceder directamente o encontrar una puerta trasera a áreas seguras de su servidor web. El Web App Firewall impone la ruta lógica o transversal determinada de un sitio web al permitir el acceso únicamente a las URL que están configuradas como URL de inicio.
Si usa el asistente o la GUI, en el cuadro de diálogo Modificar la verificación de URL de inicio, en la ficha General, puede habilitar o inhabilitar las acciones de bloqueo, registro, estadísticas, aprendizaje y los siguientes parámetros:
- Exija el cierre de URL. Permita a los usuarios acceder 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 de inicio o desde cualquier página de inicio designada haciendo clic en hipervínculos. Nota: La función de cierre de URL permite adjuntar cualquier cadena de consulta y enviarla con la URL de acción de un formulario web enviado mediante el método HTTP GET. Si sus sitios web protegidos utilizan formularios para acceder a una base de datos SQL, asegúrese de tener la comprobación de inyección de SQL habilitada y configurada correctamente.
- 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 con reconocimiento de sesión, pero utiliza un token incrustado en la URL en lugar de una cookie para rastrear la actividad del usuario, lo que consume muchos menos recursos. Cuando el cierre de URL sin sesión está habilitado, el Web App Firewall añade una etiqueta “as_url_id” a todas las URL que están cerradas. Nota: Al habilitar el cierre de URL sin sesión (cierre de URL sin sesión), también debes habilitar el cierre de URL normal ( forzar el cierre de URL) o el cierre de URL sin sesión no funcionará.
-
Valide el encabezado de referencia. Compruebe que el encabezado de referencia de una solicitud contenga datos de formularios web de su sitio web protegido en lugar de otro sitio web. Esta acción verifica que su sitio web, y no un atacante externo, es el origen del formulario web. De este modo, se protege contra las falsificaciones de solicitudes entre sitios (CSRF) sin necesidad de etiquetar los formularios, que consumen más recursos de la CPU que las comprobaciones de encabezados. El Web App Firewall puede gestionar el encabezado HTTP Referer de una de las cuatro formas siguientes, según la opción que seleccione en la lista desplegable:
- Desactivado: no valide el encabezado de referencia.
- If-Present—Valida el encabezado Referer si existe un encabezado Referer. Si se encuentra un encabezado de referencia no válido, la solicitud genera una infracción del encabezado de referencia. Si no existe ningún encabezado de referencia, la solicitud no genera una infracción de encabezado de referencia. Esta opción permite que el Web App Firewall valide el encabezado Referer en las solicitudes que contienen un encabezado Referer, pero no bloquea las solicitudes de los usuarios cuyos navegadores no configuran el encabezado Referer o que usan proxys web o filtros que eliminan ese encabezado.
- Siempre excepto las URL de inicio: valida siempre el encabezado de referencia. Si no hay un encabezado de referencia y la URL solicitada no está exenta de la regla de relajación de startURL, la solicitud genera una infracción de encabezado de referencia. Si el encabezado de referencia está presente pero no es válido, la solicitud genera una infracción del encabezado de referencia.
- Siempre excepto la primera solicitud: valida siempre el encabezado de referencia. Si no hay un encabezado de referencia, solo se permite la URL a la que se accede primero. Todas las demás URL están bloqueadas sin un encabezado de referencia válido. Si el encabezado de referencia está presente pero no es válido, la solicitud genera una infracción del encabezado de referencia.
Una configuración de URL de inicio, Exentar las URL de cierre de las comprobaciones de seguridad, no está configurada en el cuadro de diálogo Modificar la comprobación de la URL de inicio, sino 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 la inspección de secuencias de comandos entre sitios y la inyección de SQL) en las URL que cumplan con los criterios de cierre de URL.
Nota
Aunque la verificación del encabezado del remitente y la verificación de seguridad de la URL de inicio comparten la misma configuración de acción, es posible infringir la verificación del encabezado del remitente sin infringir la verificación de la URL de inicio. La diferencia es visible en los registros, que registran las infracciones de verificación del encabezado del remitente por separado de las infracciones de la verificación de la URL de inicio.
La configuración del encabezado de referencia (OFF, IF-present, alwaysExceptStartUrls y alwaysExceptFirstRequest) se organiza en orden de menos restrictivo a más restrictivo y funciona de la siguiente manera:
APAGADO:
- Encabezado de referencia no marcado.
Si está presente:
- La solicitud no tiene encabezado de referencia -> Se permite la solicitud.
- La solicitud tiene un encabezado de referencia y la URL de referencia está cerrada -> Se permite la solicitud.
- La solicitud tiene un encabezado de referencia y la URL de referencia no está cerrada -> La solicitud está bloqueada.
Siempre excepto las URL de inicio:
- La solicitud no tiene un encabezado de referencia y la URL de la solicitud es una URL de inicio -> Se permite la solicitud.
- La solicitud no tiene un encabezado de referencia y la URL de la solicitud no es una URL de inicio -> La solicitud está bloqueada.
- La solicitud tiene un encabezado de referencia y la URL de referencia está cerrada -> Se permite la solicitud.
- La solicitud tiene un encabezado de referencia y la URL de referencia no está cerrada -> La solicitud está bloqueada.
Siempre excepto la primera solicitud:
- La solicitud no tiene un encabezado de referencia y es la primera URL de solicitud de la sesión -> Se permite la solicitud.
- La solicitud no tiene un encabezado de referencia y no es la primera URL de solicitud de la sesión -> La solicitud está bloqueada.
- La solicitud tiene un encabezado de referencia y es la URL de la primera solicitud de la sesión o está cerrada por URL -> Se permite la solicitud.
- La solicitud tiene un encabezado de referencia y no es la URL de la primera solicitud de la sesión ni está cerrada por 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 las flexibilizaciones para la verificación de la URL de inicio, debe usar la GUI. En la ficha Comprobaciones del cuadro de diálogo Modificar verificación de URL de inicio, haga clic en Agregar para abrir el cuadro de diálogo Agregar relajación de verificació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 verificación de URL de inicio. Cualquiera de los dos cuadros de diálogo proporciona las mismas opciones para configurar una relajación.
Los siguientes son ejemplos de flexibilizaciones de verificación de URL de inicio:
-
Permita a los usuarios acceder a la página de inicio en www.example.com:
^http://www[.]example[.]com$ <!--NeedCopy-->
-
Permita a los usuarios acceder a todas las páginas web en formato HTML estático (.htm y .html), HTML analizado por el 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 incluyera una barra invertida, el Web App Firewall interpretaría el siguiente corchete izquierdo ([) como un carácter literal en lugar de la apertura de una clase de caracteres, lo que interrumpiría la expresión.
-
Permita 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-->
-
Permita 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-->
-
Permita a los usuarios acceder a Microsoft Office y a otros archivos de documentos del 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 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 en formato PCR, 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 los comodines, y especialmente de la combinación de metacaracter/comodín de punto y asterisco ( .*), puede producir resultados que no desea, como bloquear el acceso a contenido web que no pretendía bloquear o permitir un ataque que, de otro modo, la verificación de la URL de inicio habría bloqueado.
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.