Errores en el archivo de log del tipo "Redirect URL is not allowed" y otros síntomas aleatorios

Problema

Aparecen errores del tipo:

2019-08-27 08:46:42.641 WARN  [http-nio-8080-exec-4][PortalImpl:1003] Redirect URL .... is not allowed

en el archivo de log.

Adicionalmente, se producen diversos síntomas relacionados:

  • Hay botones en el panel de control que no funcionan (por ejemplo el botón Añadir en la configuración de LDAP)
  • El enlace "volver" no funciona o no aparece en algunas situaciones

Entorno

  • DXP 7.0
  • DXP 7.1
  • DXP 7.2
  • Portal 6.0
  • Portal 6.1
  • Portal 6.2

Solución

Estas trazas se producen cuando una petición dispone de un parámetro de redirección y en el archivo de configuración portal-ext.properties falta por configurar las propiedades que configuran los redirects que están permitidos. (o están mal configuradas) Ver:

Cada vez que se intenta acceder a una de esas URLs con el redirect mal configurado, os aparecerá en el archivo de log un mensaje de warning del tipo:

2019-07-22 06:26:05.369 WARN  [http-nio-8080-exec-7][PortalImpl:987] Redirect URL http://urlproblematica.... is not allowed


Este bloqueo se hace para evitar problemas de seguridad, en el que un atacante podría generar una URL con un redirect a otra URL maliciosa:
https://página-correcta&redirect=https://url-maliciosa.com
...que podría parecer inocua, pero cualquier persona que la clicase, sería reenviada a dicha URL maliciosa.

Para evitar esto, Liferay en los parámetros de "redirect" o "noSuchEntryRedirect" con la configuración por defecto solo se permiten redirecciones a sitios cuyo dominio corresponda a 127.0.0.1 o a la IP del servidor.

En los casos que se dispongan frontales web o balanceadores delante de los servidores Liferay, de cara a evitar este problema, es necesario configurar las propiedades de los redirects (redirect.url.security.mode, redirect.url.domains.allowed y redirect.url.ips.allowed)

La primera propiedad redirect.url.security.mode controla que tipo de validación se quiere realizar, por IP o por dominio.

De esta manera, al configurar los redirects permitidos, tendríais dos opciones:

  1. Opción 1: Configurar redirect.url.security.mode=ip y setear en redirect.url.ips.allowed las IPs desde las que se está dando servicio la web.
    • El valor por defecto de esta propiedad es 127.0.0.1 y "SERVER_IP" que se traduce en ejecución a las IPs del servidor de Liferay.
    • Si tenéis un Apache Httpd como frontal (en otra máquina) o Liferay no está detectando correctamente las IPs del servidor, es necesario que configuréis todas las IPs desde la que dáis servicio, de lo contrario puede que algunos redirects no funcionen correctamente si se acceden por alguna de esas IPs.
  2. Opción 2:  Configurar redirect.url.security.mode=domain y setear en redirect.url.domains.allowed los dominios a los que esté dando servicio vuestro Liferay
    • Si fuese más de uno tendríais que ponerlo separados por comas (example1.com, example2.com). También se permite utilizar asteriscos iniciales (*) para los subdominios: *.example.com


Las dos configuraciones a través de IP o dominio tienen sus pros y sus contras:

  • Si se configuran las IPs, solo será necesario reconfigurarlas si se cambian los servidores, de manera que si creáis sitios webs nuevos no tenéis que preocuparos de reconfigurar.
  •  Si se configuran los dominios, sería justo lo contrario, no tendríais que reconfigurar en caso de cambio de IPs, pero si creáis una web con un dominio nuevo, tenéis que añadirlo al archivo y reiniciar vuestra instalación.

Información Adicional

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 2 de 2