Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

342
Vistas
Corrección de error puntual - HRS_REQUEST_PARAMETER_TO_HTTP_HEADER

Estoy ejecutando el siguiente código dentro del servlet y obtengo este error: HRS_REQUEST_PARAMETER_TO_HTTP_HEADER Error: parámetro HTTP escrito directamente en la salida del encabezado HTTP en SSOIdpLogoutRedirect.doPost (HttpServletRequest, HttpServletResponse)

 String relayState = request.getParameter("RELAY_STATE"); if(relayState != null) { response.sendRedirect(relayState); }

Para corregir estos errores, agregué el siguiente código.

 relayState = URLEncoder.encode(relayState,StandardCharsets.UTF_8);

Pero la URL no se redirige de manera correcta, ya que puedo ver que la URL del estado de retransmisión se ha cambiado después de codificar el estado de retransmisión original = https://sad.ezhdj.net/system/web/apps/dfgh/ y después de codificar es

estado de relé =https%3A%2F%2Fsad.ezdev.net%2Fsystem%2Fweb%2Fapps%2Fdfgh%2F`

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

debe usar HttpServletResponse.encodeRedirectURL() para codificar las URL de redireccionamiento:

Cadena encodeRedirectURL (cadena URL)

Codifica la URL especificada para su uso en el método sendRedirect o, si no se necesita codificación, devuelve la URL sin cambios. La implementación de este método incluye la lógica para determinar si el ID de sesión debe codificarse en la URL.

...

Todas las URL enviadas al método HttpServletResponse.sendRedirect deben ejecutarse a través de este método...

Esto debería funcionar:

 response.sendRedirect(response.encodeRedirectURL(relayState));

dado que su URL en realidad no necesita codificación, la salida de encodeRedirectURL() será:

 https://sad.ezhdj.net/system/web/apps/dfgh/

y la redirección funcionará bien.

editar:

la solución aparentemente propuesta aún desencadena el error de HRS_REQUEST_PARAMETER_TO_HTTP_HEADER .

después de investigar un poco más, descubrí que el error está destinado a evitar la vulnerabilidad de división de la respuesta HTTP (es decir, cuando \r\n no deseados se escriben en la sección de encabezado de la respuesta http).

entonces deberíamos desinfectar mejor relayState contra este tipo de vulnerabilidad.

un simple relayState.replace("\r\n", "") es suficiente para que el error desaparezca:

 response.sendRedirect(response.encodeRedirectURL(relayState.replace("\r\n", "")));
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda