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 Magazine





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

Securitatea aplicațiilor Web

Mircea Scărlătescu

Nu mai sunt prea mulți cititori de ziare sau telespectatori care să nu fi aflat de viruși, despre atacuri asupra paginilor web, asupra calculatoarelor și alți astfel de termeni care se vehiculează în presa noastră, nu întodeauna în cunoștință de cauză.

Atacurile informatice reprezintă un subiect la modă peste tot, și împreună cu spamul probabil că oferă o sursă bună de venituri companiilor care se ocupă cu soluții de securizare infromatică.

Vei găsi sute de cărți, unele de calitate îndoielnică despre securitatea siturilor web, și cum să vă transformați situl într-unul aproape imposibil de spart sunt însă destul de triste: situl 100% securizat nu există. Pentru că întodeauna se va găsi cineva care să știe o portiță de evitare a vreunei politici de securitate. Ceea ce poți face însă este să încerci să reduci riscul de a fi afectat, aplicând o serie de strategii care deși sunt simple, sunt ignorate de cei ce construiesc un sit, și de cei care-l administreaza ulterior.

Ceea ce vei citi în cele ce urmează reprezintă o serie de sfaturi utile și la obiect, fiind aplicabile pentru majoritatea siturilor prezente online la această oră.

O primă regulă nescrisă a securității web este să nu ai niciodată încredere în utilizatorii sitului tău. Și asta pentru că dacă 90% din cei ce intră pe un sit, o fac pentru a afla câte ceva nou, sau pentru a găsi materiale interesante pentru ei, rămân 10% care îți poate da o durere serioasă de cap J. Sunt acei vizitatori care încearcă să descopere diferite vulnerabilități ale sistemului, începând cu găsirea de parole și spargerea de conturi ale utilizatorilor "cinstiți" și până la distrugerea sitului (blocarea acestuia, alterarea informațiilor de pe sit, sau copierea bazei de date, dacă aceasta prezintă interes).

Interacțiunea cu utilizatorii capătă prin prisma celor de mai sus o importanță deosebită. Astfel, orice formular în care un user își introduce date, sau poate stoca în baza de date informații trebuie să fie bine procesat, din punctul de vedere al conținutului. Este nerecomandabil să accepți pe un sit ca un utilizator să încarce cod HTML sau JavaScript. Un utilizator rău intenționat poate încerca să încarce cod care ulterior accesat poate să blocheze diferite secțiuni ale sitului, sau mai rău, să transmită informații către locații unde nu ar trebui să ajungă. De asemenea, dacă baza de date nu acceptă valori nule în înregistrările sale, trebuie să verifici ca datele introduse corespund acestei cerințe. Datele care au un format specific, cum ar fi date calendaristice, ore, coduri poștale, adrese de e-mail trebuie să fie validate pentru a corespunde unor formate standard. Validarea din acest punct de vedere se va face cu ușurință utilizând JavaScript.

O greșeală frecventă care trebuie evitată este reprezentată de utilizarea altor extensii în numele fișierelor, în afara celor recunoscute de server. Să dăm un mic exemplu. Dacă într-o aplicație web dorim să introducem un fișier care să conțină date de gen parole de conectare la baza de date, sau alt tip de constante, atunci foarte mulți programatori vor face greșeala de a redenumi acel fișier și a-I asigna o extensie de gen inc, txt, con sau alte denumiri de acest gen. Surpriza neplăcută pe care o vor avea este că dacă serverul web nu recunoaște tipul fisierului, atunci îl va trata ca și fișier text, și-l va afișa ca atare. Astfel, date critice ale aplicației vor fi disponibile pentru oricine. Această greșeală poate fi uneori fatală pentru aplicații care folosesc baze de date. Compromiterea bazei de date reprezintă pentru un sit dinamic imposibilitatea de a mai funcționa corect. Pe lângă funcționalitățile care se pierd, datele pot fi exploatate de către o persoană rău-voitoare, iar pagubele în acest caz se pot mări considerabil.

Un alt exemplu de cod nesecurizat, mult prea întâlnit pe siturile românești este reprezentat de includerea de nume de fișiere sau de date confidențiale în transferul datelor din formulare prin metoda GET. Fără a intra în detalii trebuie să spunem că metoda GET concatenează la URL-ul scriptului de prelucrare a datelor și conținutul formularului apelant. Spre exemplu putem întâlni un apel după cum urmează:

http://www.site.ro/login.php?
user=user2004&parola=pcmagazine.

Nu e nevoie să mai insistăm asupra consecințelor pe care o astfel de metodă o poate avea asupra securității unui sit. Conturile de acces pot fi compromise extrem de ușor, un browser cu opținea de "history" putând să rețină extrem de multe parole în acest mod. Accesul la fișiere ce nu sunt accesibile utilizatorilor (și nici nu e cazul să fie) poate fi înlesnit de implementări de genul:

http://www.site.ro/display
php?file=pcmagazine.html

Așadar, utlizarea metodei GET pentru transmiterea datelor din formulare trebuie să fie facută cu mult discernământ.

Pentru că în exemplul de mai sus avem parte de "clasicul" deja tandem username - parolă, trebuie să mai facem o precizare despre acest sistem de autentificare. Dacă stocarea acestui tip de date se face în baze de date, așa cum se întâmplă în majoritatea cazurilor, atunci mare atenție trebuie să fie acordată modalității de interogare a bazei de date la autentificare. Un programator (nu foarte valoros) vă poate spune că e ușor să realizezi un program scurt care să încerce să afle o parolă folosind un "dicționar", adică un fișier care conține foarte multe cuvinte, iar metoda de găsire este reprezentată de "ghicirea" parolei (se testează rând pe rând fiecare cuvânt din dicționar). O protecție pe cât de simplă pe atât de eficientă este reprezentată de numărul limitat de încercări de autentificare în sistem. Astfel, după 3 încercări nereușite de autentificare, sistemul poate să afișeze direct mesaj de eroare, fără a mai verifica dacă parola este corectă. Astfel, pentru a putea să se autentifice, un user trebuie să reinițializeze sesiunea, prin închiderea ferestrei browserului. Un program care încearcă să fure o parolă nu poate realiza acest lucru prea ușor, deci problema este eliminată. Poate vă întrebați de ce accesăm baza de date de doar trei ori… răspunsul este că numărul 3 pare să se fi impus în acest tip de scripturi de autentificare. Sistemul s-a extins și la autentificarea SIM-urilor pentru telefoanele mobile. Desigur, puteți să înlocuiți numărul de încercări cu orice valoare dorită, chiar și 1.

Exemplele de mai sus sunt desigur doar elemente menite să pună bazele în securizarea unui site. Munca depusă poate să fie destul de anevoioasă, și este posibil să descoperi că multe module ale aplicației nu corespund cererilor din ziua de azi în ceea ce privește securitatea. Dar dacă am reușit să te facem să te gândești cel puțin 5 minute la cât de important este să realizezi situri calitative din punctul de vedere al securității, atunci vizitează situri precum www.securityfocus.com unde tehnicile de protecție sunt explicate mult mai pe larg, și nu numai pentru aplicații web.

Mult succes!


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

Copyright © 1999-2004 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