Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuții   




Cartea de oaspeți   




Mesaje   





Agora   








Clic aici
PC Report - ultimul numar aparut


IPRO - PC Magazine Romania, Ianuarie 2004
SOLUȚII PENTRU PROGRAMATORII ȘI DESIGNERII WEB

Tehnologia JavaServlets - despre cookie-uri

Mircea Scărlătescu

O problemă o reprezintă de asemenea arhicunoscutul e-mail spam, adică mesaje publicitare nedorite, care odată deschise setează tot felul de cookie-uri pe sistem, care pot transmite informații către alte locații sau situri, ceea ce duce la și mai mult spam.

Cuvântul cookie (traducere din limba engleză: prăjiturică) este unul care, deși omniprezent în lucrările și tutorialele web, este un mare semn de întrebare pentru mulți pasionați ai domeniului. Una dintre cele mai controversate metode de identificare a utilizatorului web nu a fost ignorată nici de platforma Java, tehnologia JSP-Servlets acordând o importanță deosebită pentru cookie-uri. Vom încerca în cele ce urmează să vă aducem în atenție metodele de lucru precum și o prezentare scurtă a ceea ce reprezintă cookie-urile, și la ce se folosesc.

Cookie-urile reprezintă seturi de date (în format text) care sunt trimise de către serverul web către browserul client, și pe care același browser le retrimite neschimbate către server la o apelare ulterioară. Prin această metodă de stocare a datelor la client, siturile web pot să ofere servicii speciale pentru clienți printre care putem să enumerăm următoarele:

  • identificare a utilizatorilor pe situri care necesită acest lucru. Un exemplu deja clasic este reprezentat de siturile de comerț electronic, care de multe ori folosesc cookie-uri pentru a identifica automat vizitatorii, și a afișa conținutul ofertelor funcție de alegerile anterioare făcute de către clienți. Să spunem că un utilizator este interesat în mod special de articole de sport atunci când intră într-un magazin virtual. Situl poate să detecteze acest lucru și să stocheze un cookie ce va servi ca la urmatoarea vizitare, ofertele cu echipament sportiv să fie afișate primele. Există de asemenea posibilitatea de stocare a comenzilor făcute online de către vizitatori.
  • eliminarea necesității logării cu username și parolă; marea majoritate a siturilor din ziua de azi necesită un username și o parolă pentru a accesa anumite secțiuni customizate. Cookie-urile oferă o metodă practică de a elimina necesitatea introducerii repetate a parolei și a username-ului prin identificarea automată a vizitatorului.
  • publicitate mai bine direcționată; prin identificarea automată și prin stocarea informațiilor despre preferințele utilizatorilor se pot realiza campanii publicitare mult mai eficiente, în sensul că utilizatorul nostru de mai sus care dorea produse sportive de la un magazin virtual poate vedea mai multe bannere cu astfel de produse decât un pasionat al produselor electronice☺.

Această enumerare oferă câteva motive pentru ca acest sistem de monitorizare și stocare de date să fie folosit. Multe sunt însă și opiniile contra acestor ´prăjiturele´. Din punctul de vedere al securității, problema stă puțin diferit. Astfel, dimensiunile unui cookie nu pot depăși 4 Kb, iar browserele în general nu acceptă mai mult de 20 de cookie-uri per sit, și 400 în total, deci problema spațiului pe hdd-ul clientului nu intră în discuție, la fel și atacurile posibile venite direct prin intermediul acestor cookie-uri, pentu că ele nu pot stoca cod viral, ci doar informații. Până aici, toate bune și frumoase ☺.

Problema păstrării caracterului privat al navigării pe Internet se pune însă altfel în discuția noastră. Astfel, nu mulți utilizatori sunt încântați de ideea că un motor de căutare să rețină ce căutări au efectuat în ultimele zile. La fel, tipul și conținutul tematic al siturilor vizitate poate să fie reținut. O problemă o reprezintă de asemenea arhicunoscutul e-mail spam, adică mesaje publicitare nedorite, care odată deschise setează tot felul de cookie-uri pe sistem, care pot transmite informații către alte locații sau situri, ceea ce duce la și mai mult spam, și asta în caz fericit, în care datele colectate nu sunt folosite și în alte scopuri, chiar ilegale.

Tot o problemă de acest gen poate să fie reprezentată de partajarea de informații între situri, fără acordul utilizatorului. Astfel, dacă este să continuăm exemplul cu motorul de căutare, atunci un motor de căutare poate să ofere acces la informațiile stocate în cookie-uri la clienți, și astfel răspunsul la căutări poate să fie modificat în funcție de ce situri accesează clientul, toate acestea reprezentând o mare problemă din punctul de vedere al confindențialității datelor.

Dacă mai luăm încă un exemplu de mai sus, al autentificării fără username și parolă, pot să apară probleme la stocarea informațiilor senzitive în cookie-uri, cum ar fi serii ale cărților de credit, informații care pot să fie interceptate de o altă aplicație.

O scurtă concluzie la prezentarea cookie-urilor aceasta ar putea fi că deși extind serios funcționalitatea unor situri, nu trebuie să se conteze pe ele în cadrul proiectării unuei pagini web. Funcționalitatea sistemului nu trebuie să fie afectată de eliminarea cookie-urilor de pe sistemul client, și trebuie să se țină cont și de faptul că de foarte multe ori utlizatorii web își dezactivează opțiunea de a stoca informații sub forma cookie-urilor. Așadar, nu contați pe prezența cookie-urilor la clienți!

Java Servlet Cookie API

Să vedem acum ce facilități pentru lucrul cu cookie-uri ne oferă platforma Java.

Pentru a lucra cu un cookie trebuie respectate două etape: crearea unui obiect de tip cookie, setarea unor atribute, despre care vom vorbi imediat, și apoi atașarea acestui cookie la răspunsul trimis de către servlet. Prima parte, constă în instanțierea clasei Cookie, prin constructorul cu doi parametri, unul reprezentând denumirea cookie-ului, și al doilea ce conține informațiile dorite. Numele și valoarea nu trebuie să conțină spații sau unul din caracterele [ ] ( ) = , " / ? @ : ; După cum am spus, se pot seta o serie de proprietăți ale obiectului, înainte de a-l atașa la răspuns pentru trimitere la client. Prezentăm în cele ce urmează o serie de astfel de proprietăți:

  • getComment/setComment setează sau citește un comentariu asociat la obiectul de tip cookie;
  • getDomain/setDomain setează sau citește domeniul pentru care cookie-ul se aplică. În mod normal, domeniul este identic cu cel care-l trimite. Este o metodă folositoare atunci când se dorește redirectarea către o altă mașină din același domeniu (spre exemplu, dacă acest cookie este unul cu scop de setare targeting-ului publicității ce apare pe sit, atunci poate să fie setat către un server specializat);
  • getName/setName setează sau obține numele cookie-ului. Ținând cont că metoda getCookies din HttpServletRequest returnează un obiect de tip Array cu obiecte de tip Cookie, metoda getName ajută la identificarea cookie-urilor după nume;
  • getValue/setValue analog cu metoda de mai sus, setează sau citește valoarea care este memorată în obiect;
  • getSecure/setSecure setează sau obține o valoare booleană care stabilește dacă cookie-ul va fi transmis doar pe sesiuni (conexiuni) criptate (spre exemplu, de tip SSL).

Iată cum se realizează instanțierea unui obiect de tip Cookie, așa cum am spus mai sus, cu ajutorul constructorului:

  Cookie exemplu = 
       new Cookie("PCMagazine",
       "Ianuarie 2004Continut");

Obiectul response este unul de tip HttpServletResponse

Iată acum și un exemplu de citire a valorilor unor cookie-uri citite de la client:

response.addCookie(exemplu);
public String
  getTheValue(Cookie[] cookies, String cookieName)
  {
  for(int i=0; i<cookies.length; i++)
  {
  Cookie cookie = cookies[i];
  if (cookieName.equals(cookie.getName()))
  return(cookie.getValue());
  }
 }

În acest exemplu, dintr-un vector de obiecte de tip cookie se citesc pe rând numele acestor variabile, și în momentul identificării obiectului dorit, se returnează valoarea, sub forma unui obiect de tip String .

După exemplele de mai sus, se poate preciza că lucrul cu cookie-uri este facil, și se înscrie în direcția impusă de JavaServlets: simplificarea și mărirea productivității dezvoltatorilor. Dar trebuie subliniat încă o dată că acest tip de stocare a datelor și identificare a utilizatorilor este una care nu poate să fie luată drept o garanție. Având în vedere că orice user își poate dezactiva cookie-urile prin două-trei clickuri în browser, trebuie avută în vedere o variantă de rezervă, iar mulți programatori spun că de fapt varianta de rezervă pentru identificare este chiar cea bazată pe cookie-uri, prima variantă, accea de identificare prin username și parolă. Publicitatea negativă care s-a înregistrat în legatură cu cookie-urile, le fac un subiect de cele mai multe ori neplăcut pentru specialiștii în securitate web, deși multe dintre ‚poveștile horror´ despre securitatea compromisă cu ajutorul cookie-uri nu sunt adevarate, sau măcar sunt povestite în mod greșit.

În cele din urmă alegerea va aparține, iar flerul dumneavoastră ca dezvoltatori trebuie să fie elementul determinant atât în optarea pentru folosirea sau nu a cookie-urilor, cât și în modul de lucru cu acestea. Mult succes, și bug-uri cât mai puține!

Pentru detalii despre tehnologia Servlets, inclusiv clasele legate de lucrul cu sesiuni vă propunem două legături:


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2002 Agora Media.

[email protected]

LG - LifeŽs Good

www.agora.ro

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro