Gli attacchi di divisione della risposta HTTP funzionano quando i dati dell'utente (incluse le nuove righe) possono essere iniettati nelle intestazioni HTTP.
Ad esempio, prendiamo questa risposta:
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 09 Jan 2013 23:11:55 GMT
Accept-Ranges: none
Content-Length: 1234
Connection: close
Content-Type: text/html; charset=UTF-8
Cookie: test=123&username=Polynomial
<html>
...
Ora supponiamo di poter cambiare arbitrariamente il mio nome utente e includere CRLF (newlines) nel campo. Potrei quindi inserire il mio contenuto nella pagina.
Ad esempio, potrei impostare il mio nome utente su Polynomial\r\n\r\n<script>alert(document.cookie)</script>
, che comporterebbe la seguente risposta HTTP:
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 09 Jan 2013 23:11:55 GMT
Accept-Ranges: none
Content-Length: 1234
Connection: close
Content-Type: text/html; charset=UTF-8
Cookie: test=123&username=Polynomial
<script>alert(document.cookie)</script>
<html>
...
Come puoi vedere, il JavaScript è stato iniettato nella pagina. Questa è una forma di iniezione XSS / DOM tramite l'attacco di divisione.
L'inclusione dei dati utente in una richiesta non è altrettanto grave, poiché il server dovrebbe trattare le richieste degli utenti come non attendibili. Pertanto, le richieste AJAX non dovrebbero essere un problema. Questo diventa ancora meno un problema quando si considera il fatto che la maggior parte dei browser principali ha disabilitato o limitato il gestore javascript:
nella barra degli URL, al fine di limitare il potenziale di attacchi.