Cómo prevenir lainyección de CRLF (división de la respuesta HTTP) en PHP

Hice un poco de R&D sobre cómo prevenir la inyección de CRLF en php, pero no he podido encontrar ninguna solución en mi caso, ya que utilizo una herramienta de burp suite para inyectar cabeceras utilizando caracteres CRLF como se indica a continuación.

// Using my tool i put CRLF characters at the start of my request url GET /%0d%0a%20HackedHeader:By_Hacker controller/action//This generates an header for me like belowHackedHeader:By_Hacker

Así que puedo modificar todas las cabeceras haciendo lo anterior

Esta herramienta es como un servidor proxy, intercepta la petición y da la respuesta y podemos modificar la respuesta como queramos.

Así que sólo modifico la respuesta inyectando cabeceras usando caracteres CRLF. Ahora el servidor responde a esta petición inyectando los caracteres CRLF en la respuesta.

Estoy preocupado porque los campos de cabecera como Pragma, Cache-Control, Last-Modified pueden llevar a ataques de envenenamiento de caché.

header y setcookie contienen mitigaciones contra la división de respuestas/encabezados , pero estos no pueden ayudarme a resolver el problema anterior

Editar

Cuando pregunto a mysite.com como abajo Esta es la solicitud que capturé en mi herramienta como abajo

Request headers:GET /contactus HTTP/1.1Host: mysite.comAccept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: keep-alive

Y obtengo el HTML de respuesta para la solicitud anterior

Ahora, para la misma petición usando la herramienta, añado cabeceras personalizadas como abajo

Request Headers:GET /%0d%0a%20Hacked_header:By_Hacker/contactus HTTP/1.1Host: mysite.comAccept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: keep-aliveResponse Headers:HTTP/1.1 302 FoundDate: Fri, 10 Jul 2015 11:51:22 GMTServer: Apache/2.2.22 (Ubuntu)Last-Modified: Fri, 10 Jul 2015 11:51:22 GMTCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Location: mysite.com Hacked_header:By_Hacker/..Vary: Accept-EncodingContent-Length: 2Keep-Alive: timeout=5, max=120Connection: Keep-AliveContent-Type: text/html; charset=UTF-8

Puedes ver la cabecera Hacked_header inyectada: By_Hacker / .. en la respuesta anterior

¿Hay alguna forma en la configuración del servidor php o apache para evitar este tipo de hackeo de cabeceras?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *