Scriu acest articol in speranta ca web-ul se va imbunatati pe zi ce trece mai mult.
* Ca idee principala, orice variabila superglobala ($_GET, $_POST, $_FILES, $_REQUEST, $_SERVER) poate fi modificata de catre user. Singura exceptie este variabila $_SESSION dar trebuie verificata si integritatea acesteia in cazuri in care a primit valori din surse externe (request-uri, baza de date, fisiere)
* Poate suna stupid, dar totusi o sa scriu: nu dati date de FTP altor persoane (fie de incredere sau nu). Orice cPanel are posibilitatea de a face useri de FTP pe anumite foldere, care restrictioneaza accestul in tot sistemul de fisiere. De asemenea, nu dat unsername si parola pentru baza de date.
* Dupa parerea mea, definita securitatii este simpla: “Never trust nobody!”
La capitolul “Niciodata…”
1. … nu face include de variabile super-globale, nici macar $_SESSION (adica, nu face “include $_GET['path'].’fisier.php’”)
2. … nu afisa variabile super-globale fara a le escapa – XSS
3. … nu pune in sintaxe SQL variabile nefiltrate – SQL-injection
4. … nu face upload ale unor fisiere fara a verifica tipul
5. … nu pune data importante (parole, mail-uri etc) in fisiere de tip text
6. … nu stoca parole in baza de date fara a le encripta
7. … nu pune pe server aplicatii care dau acces la baza de date sau la sistemul de fisiere fara a le proteja (de exemplu, nu instala un phpmyadmin pe server fara sa-i stabilesti username si parola)
8. … nu face randari de imagini cu extensia GD fara a face cache, mai ales pri intermediul request-urilor random – exemplu de “asa nu” : resize.php?image=images/im.jpg&size=200×300
9. … nu folosi functii sensibile precum eval, create_function, passthru, exec, system, comenzi prin intermediul caracterului ` decat daca esti sigur ca nimic nu se poate intampla – nu trebuie implicat niciun factor exterior in astfel de functii, fara securizare prealabila. Motivul este simplu: sunt foarte puternice! Partea buna, la gazduirile shared de obicei sunt puse pe OFF.
10. … nu include in paginile tale web tag-uri javascript de la diferite persoane sau de pe diferite site-uri fara a cunoaste exact credibilitatea acestora. De asemenea, nu rula in bara de adrese sintaxe ca javascript:[some-characters] fara a verifica exact ceea ce face script-ul respectiv.
Daca va mai vin idei de “asa nu” adaugati si voi ca si comentarii.
Daca aveti intrebari pertinente va asigur ca or sa primeasca un raspuns.