Securitate PHP

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>