Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

343
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!