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.

webmaster@pcmagazine.ro

LG - Life´s Good

www.agora.ro

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro