Sunteți pe pagina 1din 5

PHP

PHP este un limbaj de programare. Numele PHP provine din limba englez i este un acronim
recursiv : Php: Hypertext Preprocessor. Folosit ini ial pentru a produce pagini web dinamice este !olosit
pe scar larg "n dezvoltarea paginilor i aplica iilor web. #e !olose te "n principal "nglobat "n codul
H$%& dar "ncep'nd de la versiunea (.).* se poate !olosi i "n mod +linie de comand, -.&/0 permi 'nd
crearea de aplica ii independente. 1ste unul din cele mai importante limbaje de programare web234 open5
source i server5side exist'nd versiuni disponibile pentru majoritatea web serverelor i pentru toate
sistemele de operare. .on!orm statisticilor este instalat pe 3* de milioane de situri web i pe 6 milion de
servere web2)4. 1ste disponibil sub &icen a PHP i Free #o!tware Foundation "l consider a !i un
so!tware liber.
/ni ial limbajul a !ost dezvoltat de inventatorul su 7asmus &erdor!. 8dat cu cre terea numrului de
utilizatori dezvoltarea a !ost preluat de o nou entitate numit $he PHP 9roup -9rupul PHP0.
Securitate n PHP
:plica iile web sunt mult mai expuse atacurilor dec't aplica iile conven ionale din mai multe
motive. ;nul dintre ele este c aplica ia ruleaz centralizat "ntr5un singur loc ceea ce prezint o
miz mai mare pentru atacatori -un eventual atac reu it poate s o!ere acces la multe date
,pre ioase,0. :ltul este c aplica iile web se bazeaz pe browsere i pe protocolul H$$P care s5
au dovedit am'ndou vulnerabile la atacuri.
1xist mai multe tipuri de atacuri "mpotriva aplica iilor web. :proape toate atacurile pot !i
respinse printr5un design corect al aplica iei i mai ales o ne"ncredere total "n in!orma iile care
vin "n cererile H$$P.
.ererile H$$P sunt !oarte u or de interceptat i de modi!icat. $o i parametrii pentru aplica iile
web se transmit prin H$$P deci to i parametrii trebuiesc valida i ca i c'nd ar veni dintr5o surs
nesigur. Faptul c PHP permite utilizarea !olosirii "mbricate a ghilimelelor i alte syntax sugar5
uri "n PHP !ace ca "nceptorii s aib posibilitate - i de multe ori tenta ia0 de a scrie cod
vulnerabil.
Un principiu de proiectare pentru securitatea n aplica ii web este c se aplic o strategie de
tipl white lists nu black lists. %ai concret la nivel conceptual se decide c ,totul este interzis,
i apoi se stabilesc excep ii -white list0. :lternativa adic ,totul e permis, i se speci!ic
excep iile nu este scalabil i trebuie luate "n considerare toate cazurile particulare nepermise.
O prim regul practic pentru securitate n PHP este !iltrarea input5ului i veri!icarea c
acesta are con inutul la care ne a teptm. /nput5ul "n PHP vine "n !orma array5urilor
superglobale <=91$ i <=P8#$ i deci regula acesta se poate rescrie prin: con inul $_GET i
$_POST nu se folose te dect DUP verificare i filtrare.
1xist dou tipuri de veri!icare:
6. >eri!icarea tipului con inutului: se !ac veri!icri relativ la parametrul a teptat -spre
exemplu dac se ceruse un numr i ce se prime te nu e un numr0 se veri!ic existen a
caracterelor speciale i se !olosesc tehnici -cum ar !i escaping0 pentru a !ace parametrul
utilizabil.
3. >eri!icarea semanticii parametrului -o valoare poate !i spre exemplu un string valid dar
poate s nu "nsemne nimic "n contextul curent al aplica iei: spre exemplu se a teapt true
? false i se prime te green0. Faptul c un utilizator este limitat n browser s aleag
doar o anumit valoare dintr5un meniu de tip dropdown nu prezint nici un !el de
siguran c pe serverside vor ajunge doar valorile din acel dropdown.
Tipuri de date interne
6. Boolean 5 valori logice tip adevrat sau !alse similare cu cele din .@@ sau Perl.
3. Integer 5 numere "ntregi -"n baza 6* 3 sau 6A0. >aloarea maxim depinde de sistem i de
tipul de integer. $ipul poate !i BsignedB sau BunsignedB adica dependent de semnul @ sau
5 sau independent de acestea. >alorile pentru integer unsigned sunt mai mari dec't cele
pentru signed. #istemele pe )3 bits pot crea numere "ntregi "ntre 536(C(D)A(D i
36(C(D)A(C- 3E)656 0. %aximul pentru sisteme pe A( bits este F33))C3*)ADG(CCGD*C.
). loat 5 cunoscute ca numere reale. >alorile maxime sunt de asemenea dependete de
plat!orm in general cu un maxim de H6.De)*D cu o precizie de 6( zecimale dupa virgula
-!ormatul A( bits /1110.
(. String 5 iruri de caractere. Inainte de PHPA un caracter era echivalent cu un byte. Nu
exist limitri pentru lungimea unui ir "n a!ara memoriei alocate PHP.
G. !rra" 5 "n PHP un array este un tip de data care con ine un grup de elemente. Fiecare
element are un indice intern "n group iar !iecrui indice "i corespunde o valoare 5
elementul "n sine. ;n ast!el de grup poate !i !olosit ca o simulare pentru diverse situa ii
matematice precum vectori serii dic ionare de elemente liste ordonate matrici sau
matrici de matrici. /ndicii i valorile unui grup pot !i orice tip de data interna PHP -cu
excep ii: obiectele resursele i null nu pot !i indici0.
A. Obiecte 5 8 clasa este o colec ie de propriet i i !unc ii av'nd o logic comun.
8biectele sunt instan e ale unei clase "n care propriet ile obiectului primesc valori
speci!ice. >ezi P88 5 programarea orientat pe obiecte.
C. #esurse 5 aceastea sunt variabile speciale care con in legturi cu resurse externe PHP. Je
exemplu conexiunea cu o baz de date este o resursa deschis i men inut cu ajutorul
unor !unc ii special de!inite pentru aceasta munc.
D. $U%% 5 este un tip special de dat care semni!ic c variabila respectiv nu a !ost
de!init i c nu are valoare sau valoarea e necunoscut.
!tacuri posibile
;tilizarea PHP "n calitate de binar .9/ este o op iune pentru cazurile c'nd dintr5un anume motiv
nu se dore te integrarea PHP "n calitate de modul "n serverul so!tware -precum :pache0 sau
PHP se va utiliza cu di!erite tipuri de "nveli uri .9/ pentru a crea medii securizate cu ajutorul
chroot i setuid pentru scripturi. :ceast variant implic de obicei instalarea binarului PHP
executabil "n directorul cgi5bin al serverului web. Indrumarul .17$ K .:5FA.66 nu recomand
plasarea oricrui tip de interpretor de acest gen "n directorul cgi5bin. .hiar dac binarul PHP
poate !i !olosit ca un interpretor de sine stttor PHP a !ost conceput "n a a !el "nc't s previn
atacuri pe care o asemenea variant de utilizare le !ace posibil:
:ccesarea !i ierelor din sistem: http:!".hostc#i$%inphp&etcpass'd /n!orma ia din
;7& de dup semnul de "ntrebare -L0 este transmis interpretorului "n calitate de
argumente "n linia de comand de ctre inter!a a .9/. Je obicei interpretoarele deschid
i execut !i ierul speci!icat ca prim argument "n linia de comand. .'nd este apelat ca
un binar .9/ PHP re!uz s interpreteze argumentele din linia de comand.
:ccesarea oricrui document web de pe server: http:!".hostc#i$
%inphpsecretdoc.ht!l /n!orma iile introduse "n ;7& dup denumirea binarului PHP
secretdoc.ht!l sunt de obicei utilizate pentru a speci!ica denumirea i calea ctre
!i ierul care trebuie deschis de ctre interpretorul .9/. Je obicei directivele din
con!igura ia unui server web -:pache: :ction0 sunt !olosite pentru a redirec iona
interpelrile ctre documente ca http:!".hostsecretscript.php ctre interpretorul PHP.
In acest caz serverul web veri!ic mai "nt'i permisiunile de acces ctre directorul secret
i dup aceea creeaz interpelarea de redirec ionare ctre http:!".hostc#i$
%inphpsecretscript.php. .u regret dac interpelarea este ini ial scris "n aceast !orm
serverul web nu e!ectueaz nici o veri!icare de acces ctre !i ierul secretscript.php ci
numai ctre !i ierul c#i$%inphp. In acest !el orice utilizator care poate accesa !i ierul
c#i$%inphp poate accesa i orice document protejat de pe serverul web. In PHP
directivele de con!igurare "n timpul rulrii cgi.!orce=redirect doc=root i user=dir pot !i
utilizate pentru a preveni acest atac dac arborele de documente de pe server con ine
directoare cu acces restric ionat.
&a'ul () numai fi ierele publice sunt ser*ite clientului
Jac serverul dumneavoastr nu are nici un !el de con inut -directoare ? !i iere0 care este
restric ionat prin parol sau pe baz de /P atunci nu este nevoie de aceste op iuni de con!igurare.
Jac serverul web nu v permite s e!ectua i redirec ionri sau nu posed mijloace de a
comunica binarului PHP c interpelarea este redirec ionat securizat pute i speci!ica op iunea
55enable5!orce5cgi5redirect scriptului de con!igurare. $otu i trebuie s v asigura i c scripturile
dumneavoastr PHP nu se bazeaz pe una din metodele de apelare a scriptului 5 direct
http:!".hostc#i$%inphpdirscript.php sau prin redirec ionare http:!".hostdirscript.php.
&a'ul +) utili'area cgi.force_redirect
8p iunea de con!igurare cgi.!orce=redirect previne rularea unui script PHP direct printr5un ;7&
gen http:!".hostc#i$%inphpsecretdirscript.php. PHP va ac iona "n acest mod numai dac a
trecut printr5o regul de redirec ionare a serverului web. PHP de versiune anterioar (.3.* utiliza
pentru aceasta op iunea la compilare $$ena%le$force$c#i$redirect.
Je obicei redirec ionarea "n con!igura ia :pache se e!ectueaz cu ajutorul urmtoarelor
directive:
:ction php5script ?cgi5bin?php
:ddHandler php5script .php
&a'ul ,) stabilirea doc-root sau user-dir
/ncluderea de con inut activ de pild scripturi i executabile "n directoarele serverului web
destinate documentelor este de multe ori considerat o metod nesigur. Jac din cauza unei
gre eli "n con!igura ie scripturile nu sunt executate ci a!i ate ca documente H$%& aceasta va
duce la dezvluirea propriet ii intelectuale sau a in!orma iei securizate cum ar !i parolele. Je
aceea mul i administratori de sistem con!igureaz o alt structur de directoare pentru scripturile
care sunt accesibile numai prin PHP .9/ deci care vor !i "ntotdeauna interpretate i nu a!i ate
direct.
Je asemenea dac metoda de determinare a redirec ionrii interpelrii descris mai sus nu este
disponibil atunci este necesar con!igurarea unui director doc=root pentru scripturi care este
di!erit de cel pentru documente web.
Pute i stabili directorul5rdcin al scripturilor PHP prin directiva doc=root din !i ierul de
con!igura ie sau pute i con!igura variabila de mediu PHP=J8.;%1N$=788$. Jac este
setat versiunea .9/ a PHP "ntotdeauna va construi denumirea !i ierului ast!el ca s !ie deschis
cu acest doc_root i in!orma iile despre cale din interpelare de aceea pute i !i sigur c nici un
script nu va !i executat "n a!ara acestui director -excep ie !iind user_dir de mai jos0.
8 alt op iune !olosit este user=dir. .'nd user=dir nu este con!igurat singurul lucru care
controleaz !i ierul deschis este doc_root. Jeschiderea unui ;7& ca http:!".host(userdoc.php
nu va rezulta "n deschiderea unui !i ier din directorul home al utilizatorului ci a unui !i ier
numit (userdoc.php din doc=root -da un director a crui denumire "ncepe cu tild 2(40.
Jac user=dir este con!igurat spre exemplu ca pu%lic_php o interpelare de genul
http:!".host(userdoc.php va deschide un !i ier numit doc.php din directorul numit
pu%lic_php a!lat "n directorul home al utilizatorului BuserB. Jac directorul rdcin al
utilizatorului BuserB este ho!euser !i ierul executat este ho!euserpu%lic_phpdoc.php.
1xpansiunea user_dir se petrece independent de setarea doc_root deci pute i controla accesul la
directorul rdcin i la directoarele utilizatorilor "n mod separat.
&a'ul .) interpretorul PHP se afl n afara directorului rdcin web
8 metod !oarte sigur este de a plasa binarul interpretorului PHP undeva "n a!ara arborelui
!i ierelor pentru web. In usrlocal%in spre exemplu. #ingurul dezavantaj al acestei op iuni este
c trebuie s introduce i urmtoarea linie:
MN?usr?local?bin?php
la "nceputul !iecrui !i ier care con ine tag5uri PHP. Je asemenea va trebui s !ace i !i ierul executabil.
:dic trata i5l exact ca pe un script .9/ scris "n Perl sau sh sau orice alt limbaj de scripting care
utilizeaz mecanismul )* de evadare din "nveli ul sistemului pentru a se lansa.
Pentru ca PHP s utilizeze in!orma iile din P:$H=/NF8 i P:$H=$7:N#&:$1J "n mod
corect interpretorul PHP trebuie compilat cu op iunea de con!igurare 55enable5discard5path.

S-ar putea să vă placă și