E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Diverse (10)

5 sfaturi utile pentru crearea unor aplicatii PHP sigure

23.03.2009
5 sfaturi utile pentru crearea unor aplicatii PHP sigure

PHP reprezinta unul dintre cele mai populare limbaje de programare destinate web-ului. Uneori, un limbaj cu o interfata prietenoasa poate ajuta programatorul prea mult si se pot strecura brese de securitate, creand blocaje in dezvoltare. In acest tutorial, iti voi oferi 5 sfaturi care te vor ajuta sa eviti cateva capcane de securitate obisnuite in PHP si atacuri asupra proiectului.

Total vizualizari: 8019 8019 afisari   |   Comentarii  1   |   Rating   |   (2 voturi)   |   Timp necesar: 25 min 25 min   |   Nivel de cunostiinte necesar: Mediu  Mediu

Sursa:  net.tutsplus.com  
Autor:  Justin Shreve
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
1 2 »
comenteaza printeaza

PHP reprezinta unul dintre cele mai populare limbaje de programare destinate web-ului. Uneori, un limbaj cu o interfata prietenoasa poate ajuta programatorul prea mult si se pot strecura brese de securitate, creand blocaje in dezvoltare. In acest tutorial, iti voi oferi 5 sfaturi care te vor ajuta sa eviti cateva capcane de securitate obisnuite in PHP si atacuri asupra proiectului.

Sfatul 1: Utilizeaza corect raportarea erorilor

In timpul procesului de dezvoltare, aplicatia de raportare a erorilor este foarte utila. Raportarea erorilor te ajuta sa identifici greselile de sintaxa, sa descoperi utilizarea incorecta a functiilor si multe altele. Oricum, de indata ce site-ul prinde viata, aceeasi raportare care iti era aliat in timpul dezvoltarii, se poate transforma intr-un tradator care spune utilizatorilor tai mai multe despre site decat ti-ai dori ca ei sa afle (ce software utilizezi, structura de directoare etc.)

De indata ce site-ul a fost lansat, ar trebui sa te asiguri ca ai ascuns toate raportarile erorilor. Aceasta se poate face prin apelul urmatoarei functii la inceputul fiecarui fisier din aplicatia ta. error_reporting(0);

In cazul in care ceva nu merge bine, vei dori sa afli cateva detalii despre ce s-a intamplat. Prin urmare, inregistreaza erorile intr-un fişier protejat. Acest lucru poate fi realizat prin functia PHP set_error_handler.

Sfatul 2: Dezactiveaza register_globals si Magic Quotes

La inceput, designerii PHP au inclus anumite caracteristici pentru a face dezvoltarea mai usoara. Sau, aşa au crezut ei! Unele dintre aceste caracteristici utile pot avea consecinte nedorite. Eu le numesc "caracteristici rele" pentru ca au permis aparitia unor cosmaruri in validarea datelor si au creat o cale pentru ca bug-urile sa-si croiasca drum in script-uri. Unul dintre primele lucruri pe care ar trebui sa-l faci cand incepi procesul de dezvoltare, este sa dezactivezi anumite caracteristici.

Observatie: In funcţie de host, acestea pot fi sau nu oprite. Daca dezvolti pe propriul calculator sau in alt mediu local similar, probabil ca nu vor fi oprite. Unele dintre aceste caracteristici au fost, de asemenea, eliminate in cadrul urmatoarei versiuni PHP6, dar sunt omniprezente in aplicatiile PHP4 şi sunt doar deprecated in aplicatiile PHP5.

Register_globals

Pe scurt, register_globals a fost menit sa contribuie la dezvoltarea rapida a aplicatiei. De exemplu, acest URL, http://yoursite.tld/index.php?var=1, care include un string de interogare. Instructiunea register_globals permite accesul automat la o valoare cu $var in loc de $_GET [ 'var']. Acest lucru ti s-ar putea parea util dar, din nefericire, toate variabilele din cod au obtinut aceasta proprietate. Urmatorul fragment de cod este doar un exemplu obisnuit pe care il vei observa in scripturile PHP:

<?php
if( !empty( $_POST['username'] ) && $_POST['username'] == 'test' && !empty( $_POST['password'] ) && $_POST['password'] == "test123" )   {   
    $access = true;   
}  ?>

Daca aplicatia se executa cu register_globals ON, un utilizator ar putea scrie access = 1 intr-un URL de interogare, si atunci ar avea acces la orice script care ruleaza.

Din nefericire, nu putem dezactiva register_globals din script (folosind ini_set, cum ar fi normal), dar putem utiliza un fisier .htaccess. Unele host-uri iti permit de asemenea, sa ai un fişier php.ini pe server

Dezactivarea utilizand .htaccess

php_flag register_globals 0

Dezactivarea utilizand php.ini

register_globals = Off

Nota: Daca utilizezi un fişier personalizat php.ini care nu se aplica intregului server, trebuie sa incluzi aceste declaraţii in fiecare subdirector care contine PHP.

Magic Quotes (magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase)

Magic Quotes a fost o caracteristica menita sa-i salveze pe programatori de problemele cauzate de utilizarea addslashes() si a altor elemente de securitate in cadrul codului. Exista cel putin trei probleme asociate cu Magic Quotes. Prima apare in cazul utilizarii atat a magic quotes cat si a addslashes() in acelasi timp. In acest caz, efectul va fi adaugarea mai multor caractere slash, ceea ce conduce la erori. Cea de-a doua problema apare daca presupui ca magic quotes este activat si de fapt nu este. Atunci, toate inregistrarile raman nebifate. Cea de-a treia problema este ca magic quotes introduce slash-uri doar pentru ghilimelele simple si duble, dar daca utilizezi o baza de date, exista multe alte caractere specifice care trebuie de asemenea prelucrate. Se recomanda dezactivarea acestei facilitati si utilizarea in schimb, in mod corect, a validarii variabilelor (a se vedea mai jos).

Din pacate, nici nu putem dezactiva magic quotes din script, utilizand ini_set. Ca si pentru register_globals, putem folosi fisierele .htaccess sau php.ini.

Dezactivarea utilizand .htaccess

php_flag magic_quotes_gpc 0 php_flag magic_quotes_runtime 0

Dezactivarea utilizand php.ini

magic_quotes_gpc = Off

magic_quotes_runtime = Off

magic_quotes_sybase = Off

Nota: Daca utilizezi un fişier personalizat php.ini care nu se aplica intregului server, trebuie sa incluzi aceste declaraţii in fiecare subdirector care contine PHP.

Pagina:
1 2 »
comenteaza printeaza
Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(2 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (1) spune-ti parerea
bogdan bogdan , Miercuri, 16 Septembrie 2009, ora 00:41
#1

tare....:),,,,,nu prea se pune accentul pe securitate pe la noi ...dupa principiu "las-o ma ca merge asa"....oricum cred ca asta e numai o mica parte din capitolul de securitate al PHP-ului asa ca astept noi informatii :::::::::D

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4335
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4200
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4185
Tutoriale scrise de kheops
kheops Rang utilizator kheops - Mediu
4084
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4020
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Fotografie PSD HTML Action Script Java Ruby on Rails Python Lightroom Sony Vegas XHTML Swift 3D SWF JSON RoR Word Excel Verilog Fireworks CSS Dreamweaver Gimp MySQL StyleSheet Photoshop Illustrator PHP AJAX Outlook XML Javascript SEO Flash Bridge Vista Powerpoint COREL DRAW
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software