Mais conteúdo relacionado
Semelhante a Securing PHP Applications (20)
Mais de Reggie Niccolo Santos (15)
Securing PHP Applications
- 5. WWhhaatt iiss SSeeccuurriittyy??
AAccccoorrddiinngg ttoo tthhee PPHHPP SSeeccuurriittyy CCoonnssoorrttiiuumm::
SSeeccuurriittyy iiss aa mmeeaassuurreemmeenntt,, nnoott aa cchhaarraacctteerriissttiicc
SSeeccuurriittyy mmuusstt bbee bbaallaanncceedd wwiitthh eexxppeennssee
SSeeccuurriittyy mmuusstt bbee bbaallaanncceedd wwiitthh uussaabbiilliittyy
SSeeccuurriittyy mmuusstt bbee ppaarrtt ooff tthhee ddeessiiggnn
- 7. AA SSeeccuurree MMiinnddsseett
AA sseeccuurriittyy--ccoonnsscciioouuss mmiinnddsseett aassssuummeess tthhaatt aallll ddaattaa
rreecceeiivveedd iinn iinnppuutt iiss ttaaiinntteedd aanndd tthhiiss ddaattaa mmuusstt bbee
ffiilltteerreedd bbeeffoorree uussee aanndd eessccaappeedd wwhheenn lleeaavviinngg tthhee
aapppplliiccaattiioonn..
- 8. AAllll IInnppuutt iiss TTaaiinntteedd
IIff tthhee ddaattaa oorriiggiinnaatteess ffrroomm aa ffoorreeiiggnn ssoouurrccee ssuucchh aass
uusseerr ffoorrmm iinnppuutt,, tthhee qquueerryy ssttrriinngg,, oorr eevveenn aann RRSSSS
ffeeeedd,, iitt ccaannnnoott bbee ttrruusstteedd.. IItt iiss ttaaiinntteedd ddaattaa..
BBeeffoorree pprroocceessssiinngg ttaaiinntteedd ddaattaa,, iitt iiss iimmppoorrttaanntt ttoo ffiilltteerr
aanndd ssaanniittiizzee iitt.. OOnnccee tthhee ddaattaa iiss ffiilltteerreedd aanndd
ssaanniittiizzeedd,, tthheenn iitt iiss ccoonnssiiddeerreedd ssaaffee ttoo uussee..
- 9. WWhhiitteelliisstt vvss.. BBllaacckklliisstt
BBllaacckklliisstt aapppprrooaacchh
tthhee lleessss rreessttrriiccttiivvee ffoorrmm ooff ffiilltteerriinngg tthhaatt aassssuummeess tthhee
pprrooggrraammmmeerr kknnoowwss eevveerryytthhiinngg tthhaatt sshhoouulldd nnoott bbee
aalllloowweedd ttoo ppaassss tthhrroouugghh
WWhhiitteelliisstt ffiilltteerriinngg
mmuucchh mmoorree rreessttrriiccttiivvee,, yyeett iitt aaffffoorrddss tthhee pprrooggrraammmmeerr tthhee
aabbiilliittyy ttoo aacccceepptt oonnllyy tthhee iinnppuutt ss//hhee eexxppeeccttss ttoo
rreecceeiivvee
- 10. IInnppuutt FFiilltteerriinngg
OOnnee ooff tthhee kkeeyy ccoonncceeppttss yyoouu mmuusstt aacccceepptt iiss tthhaatt uusseerr
iinnppuutt iiss uunnrreelliiaabbllee aanndd nnoott ttoo bbee ttrruusstteedd
PPaarrttiiaallllyy lloosstt iinn ttrraannssmmiissssiioonn bbeettwweeeenn sseerrvveerr aanndd
cclliieenntt
CCoorrrruupptteedd bbyy ssoommee iinn--bbeettwweeeenn pprroocceessss
MMooddiiffiieedd bbyy tthhee uusseerr iinn aann uunneexxppeecctteedd mmaannnneerr
IInntteennttiioonnaall aatttteemmpptt ttoo ggaaiinn uunnaauutthhoorriizzeedd aacccceessss oorr
ttoo ccrraasshh tthhee aapppplliiccaattiioonn
- 11. EExxaammppllee:: IInnppuutt FFiilltteerriinngg
<<ffoorrmm mmeetthhoodd==""PPOOSSTT"">>
UUsseerrnnaammee:: <<iinnppuutt ttyyppee==""tteexxtt"" nnaammee==""uusseerrnnaammee"" //>><<bbrr //>>
PPaasssswwoorrdd:: <<iinnppuutt ttyyppee==""tteexxtt"" nnaammee==""ppaasssswwoorrdd"" //>><<bbrr //>>
FFaavvoouurriittee ccoolloouurr::
<<sseelleecctt nnaammee==""ccoolloouurr"">>
<<ooppttiioonn>>RReedd<<//ooppttiioonn>>
<<ooppttiioonn>>BBlluuee<<//ooppttiioonn>>
<<ooppttiioonn>>YYeellllooww<<//ooppttiioonn>>
<<ooppttiioonn>>GGrreeeenn<<//ooppttiioonn>>
<<//sseelleecctt>><<bbrr //>>
<<iinnppuutt ttyyppee==""ssuubbmmiitt"" //>>
<<//ffoorrmm>>
- 12. EExxaammppllee:: IInnppuutt FFiilltteerriinngg
$$cclleeaann == aarrrraayy(());;
iiff ((ccttyyppee__aallpphhaa(($$__PPOOSSTT[[‘‘uusseerrnnaammee’’]]))))
{{
$$cclleeaann[[’’uusseerrnnaammee’’]] == $$__PPOOSSTT[[’’uusseerrnnaammee’’]];;
}} if (ctype_alnum($_POST[’password’]))
{{
$$cclleeaann[[’’ppaasssswwoorrdd’’]] == $$__PPOOSSTT[[’’ppaasssswwoorrdd’’]];;
}}
$$ccoolloouurrss == aarrrraayy((’’RReedd’’,, ’’BBlluuee’’,, ’’YYeellllooww’’,, ’’GGrreeeenn’’));;
iiff ((iinn__aarrrraayy(($$__PPOOSSTT[[’’ccoolloouurr’’]],, $$ccoolloouurrss))))
{{
$$cclleeaann[[’’ccoolloouurr’’]] == $$__PPOOSSTT[[’’ccoolloouurr’’]];;
}}
- 13. EEssccaappiinngg OOuuttppuutt
WWhheerreeaass ffiilltteerriinngg iinnppuutt pprrootteeccttss yyoouurr aapppplliiccaattiioonn ffrroomm
bbaadd oorr hhaarrmmffuull ddaattaa,, eessccaappiinngg oouuttppuutt pprrootteeccttss tthhee
cclliieenntt aanndd uusseerr ffrroomm ppootteennttiiaallllyy ddaammaaggiinngg ccoommmmaannddss
TToo eessccaappee oouuttppuutt iinntteennddeedd ffoorr aa wweebb bbrroowwsseerr,, PPHHPP
pprroovviiddeess hhttmmllssppeecciiaallcchhaarrss(()) aanndd hhttmmlleennttiittiieess(()),, tthhee
llaatttteerr bbeeiinngg tthhee mmoosstt eexxhhaauussttiivvee aanndd,, tthheerreeffoorree,,
rreeccoommmmeennddeedd ffuunnccttiioonn ffoorr eessccaappiinngg
- 14. EExxaammppllee:: EEssccaappiinngg OOuuttppuutt
$$hhttmmll == aarrrraayy();;
$$hhttmmll[[’’mmeessssaaggee’’]] == hhttmmlleennttiittiieess($$uusseerr__mmeessssaaggee,,
EENNTT__QQUUOOTTEESS,, ’’UUTTFF--88’’);;
eecchhoo $$hhttmmll[[’’mmeessssaaggee’’]];;
- 15. PPrreeppaarreedd SSttaatteemmeennttss
//// FFiirrsstt,, ffiilltteerr tthhee iinnppuutt
$$cclleeaann == aarrrraayy();;
iiff (ccttyyppee__aallpphhaa($$__PPOOSSTT[[’’uusseerrnnaammee’’]]))
{{
$$cclleeaann[[’’uusseerrnnaammee’’]] == $$__PPOOSSTT[[’’uusseerrnnaammee’’]];;
}}
//// SSeett aa nnaammeedd ppllaacceehhoollddeerr iinn tthhee SSQQLL ssttaatteemmeenntt ffoorr uusseerrnnaammee
$$ssqqll == ’’SSEELLEECCTT ** FFRROOMM uusseerrss WWHHEERREE uusseerrnnaammee == ::uusseerrnnaammee’’;;
//// AAssssuummee tthhee ddaattaabbaassee hhaannddlleerr eexxiissttss;; pprreeppaarree tthhee ssttaatteemmeenntt
$$ssttmmtt == $$ddbbhh-->>pprreeppaarree($$ssqqll);;
//// BBiinndd aa vvaalluuee ttoo tthhee ppaarraammeetteerr
$$ssttmmtt-->>bbiinnddPPaarraamm(’’::uusseerrnnaammee’’,, $$cclleeaann[[’’uusseerrnnaammee’’]]);;
//// EExxeeccuuttee aanndd ffeettcchh rreessuullttss
$$ssttmmtt-->>eexxeeccuuttee();;
$$rreessuullttss == $$ssttmmtt-->>ffeettcchhAAllll();;
- 16. WWeebbssiittee SSeeccuurriittyy
TThhee sseeccuurriittyy ooff tthhee eelleemmeennttss ooff aa wweebbssiittee tthhrroouugghh
wwhhiicchh aann aattttaacckkeerr ccaann iinntteerrffaaccee wwiitthh yyoouurr aapppplliiccaattiioonn..
TThheessee vvuullnneerraabbllee ppooiinnttss ooff eennttrryy iinncclluuddee ffoorrmmss aanndd
UURRLLss
- 17. SSppooooffeedd FFoorrmmss
TThhee eeaassiieesstt wwaayy iiss ttoo ssiimmppllyy ccooppyy aa ttaarrggeett ffoorrmm aanndd
eexxeeccuuttee iitt ffrroomm aa ddiiffffeerreenntt llooccaattiioonn
- 18. EExxaammppllee:: FFoorrmm SSppooooffiinngg
<<ffoorrmm mmeetthhoodd==""PPOOSSTT"" aaccttiioonn==""pprroocceessss..pphhpp"">>
<<pp>>SSttrreeeett:: <<iinnppuutt ttyyppee==""tteexxtt"" nnaammee==""ssttrreeeett""
mmaaxxlleennggtthh==""110000"" //>><<//pp>>
<<pp>>CCiittyy:: <<iinnppuutt ttyyppee==""tteexxtt"" nnaammee==""cciittyy"" mmaaxxlleennggtthh==""5500""
//>><<//pp>>
<<pp>>SSttaattee::
<<sseelleecctt nnaammee==""ssttaattee"">>
<<ooppttiioonn vvaalluuee=="""">>PPiicckk aa ssttaattee......<<//ooppttiioonn>>
<<ooppttiioonn vvaalluuee==""AALL"">>AAllaabbaammaa<<//ooppttiioonn>>
<<ooppttiioonn vvaalluuee==""AAKK"">>AAllaasskkaa<<//ooppttiioonn>>
<<ooppttiioonn vvaalluuee==""AARR"">>AArriizzoonnaa<<//ooppttiioonn>>
<<!!-- ooppttiioonnss ccoonnttiinnuuee ffoorr aallll 5500 ssttaatteess -->>
<<//sseelleecctt>>
<<//pp>>
<<pp>>ZZiipp:: <<iinnppuutt ttyyppee==""tteexxtt"" nnaammee==""zziipp"" mmaaxxlleennggtthh==""55"" //>><<//pp>>
<<pp>><<iinnppuutt ttyyppee==""ssuubbmmiitt"" //>><<//pp>>
<<//ffoorrmm>>
- 19. EExxaammppllee:: FFoorrmm SSppooooffiinngg
<<ffoorrmm mmeetthhoodd==""PPOOSSTT""
aaccttiioonn==""hhttttpp::////eexxaammppllee..oorrgg//pprroocceessss..pphhpp"">>
<<pp>>SSttrreeeett:: <<iinnppuutt ttyyppee==""tteexxtt""
nnaammee==""ssttrreeeett"" //>><<//pp>>
<<pp>>CCiittyy:: <<iinnppuutt ttyyppee==""tteexxtt"" nnaammee==""cciittyy""
//>><<//pp>>
<<pp>>SSttaattee:: <<iinnppuutt ttyyppee==""tteexxtt""
nnaammee==""ssttaattee"" //>><<//pp>>
<<pp>>ZZiipp:: <<iinnppuutt ttyyppee==""tteexxtt"" nnaammee==""zziipp""
//>><<//pp>>
<<pp>><<iinnppuutt ttyyppee==""ssuubbmmiitt"" //>><<//pp>>
<<//ffoorrmm>>
- 20. FFoorrmm SSppooooffiinngg:: RRiisskk MMiittiiggaattiioonn
CChheecckk tthhee rreeffeerrrreerr
NNoott 110000%% sseeccuurree
DDoo nnoott rreellyy ssoolleellyy oonn cclliieenntt--ssiiddee vvaalliiddaattiioonn
FFiilltteerr iinnppuutt ttoo eennssuurree tthhaatt aallll ddaattaa mmuusstt ccoonnffoorrmm ttoo
aa lliisstt ooff aacccceeppttaabbllee vvaalluueess,, aanndd eevveenn ssppooooffeedd ffoorrmmss
wwiillll nnoott bbee aabbllee ttoo ggeett aarroouunndd yyoouurr sseerrvveerr--ssiiddee ffiilltteerriinngg
rruulleess
- 21. CCrroossss SSiittee SSccrriippttiinngg ((XXSSSS))
EExxppllooiittss tthhee uusseerr’’ss ttrruusstt iinn tthhee aapppplliiccaattiioonn aanndd iiss
uussuuaallllyy aann eeffffoorrtt ttoo sstteeaall uusseerr iinnffoorrmmaattiioonn,, ssuucchh aass
ccooookkiieess aanndd ootthheerr ppeerrssoonnaallllyy iiddeennttiiffiiaabbllee ddaattaa
AAllll aapppplliiccaattiioonnss tthhaatt ddiissppllaayy iinnppuutt aarree aatt rriisskk
- 22. EExxaammppllee:: XXSSSS
<<ffoorrmm mmeetthhoodd==""PPOOSSTT"" aaccttiioonn==""pprroocceessss..pphhpp"">>
<<pp>>AAdddd aa ccoommmmeenntt::<<//pp>>
<<pp>>
<<tteexxttaarreeaa nnaammee==““ccoommmmeenntt””>><<//tteexxttaarreeaa>>
<<//pp>>
<<pp>><<iinnppuutt ttyyppee==""ssuubbmmiitt"" //>><<//pp>>
<<//ffoorrmm>>
- 23. EExxaammppllee:: MMaalliicciioouuss IInnppuutt ffoorr
XXSSSS
<<ssccrriipptt>>
ddooccuummeenntt..llooccaattiioonn ==
““hhttttpp::////eexxaammppllee..oorrgg//ggeettccooookkiieess..pphhpp??ccooookkiieess==““
++ ddooccuummeenntt..ccooookkiiee;;
<<//ssccrriipptt>>
////bbrriinnggss ttoo aa nneeww llooccaattiioonn wwiitthh ccooookkiieess
- 25. CCrroossss--SSiittee RReeqquueesstt FFoorrggeerriieess
((CCSSRRFF))
AAnn aattttaacckk tthhaatt aatttteemmppttss ttoo ccaauussee aa vviiccttiimm ttoo
uunnkknnoowwiinnggllyy sseenndd aarrbbiittrraarryy HHTTTTPP rreeqquueessttss,,
uussuuaallllyy ttoo UURRLLss rreeqquuiirriinngg pprriivviilleeggeedd aacccceessss aanndd uussiinngg
tthhee eexxiissttiinngg sseessssiioonn ooff tthhee vviiccttiimm ttoo ddeetteerrmmiinnee aacccceessss
- 26. XXSSSS vveerrssuuss CCSSRRFF
WWhheerreeaass aann XXSSSS aattttaacckk eexxppllooiittss tthhee uusseerr’’ss ttrruusstt iinn aann
aapppplliiccaattiioonn,, aa ffoorrggeedd rreeqquueesstt eexxppllooiittss aann
aapppplliiccaattiioonn’’ss ttrruusstt iinn aa uusseerr,, ssiinnccee tthhee rreeqquueesstt
aappppeeaarrss ttoo bbee lleeggiittiimmaattee aanndd iitt iiss ddiiffffiiccuulltt ffoorr tthhee
aapppplliiccaattiioonn ttoo ddeetteerrmmiinnee wwhheetthheerr tthhee uusseerr iinntteennddeedd ffoorr
iitt ttoo ttaakkee ppllaaccee
- 27. SScceennaarriioo:: CCSSRRFF AAttttaacckk
SSuuppppoossee yyoouu hhaavvee aa wweebb ssiittee iinn wwhhiicchh uusseerrss rreeggiisstteerr
ffoorr aann aaccccoouunntt aanndd tthheenn bbrroowwssee aa ccaattaalloogg ooff bbooookkss ffoorr
ppuurrcchhaassee
AAggaaiinn,, ssuuppppoossee tthhaatt aa mmaalliicciioouuss uusseerr ssiiggnnss uupp ffoorr aann
aaccccoouunntt aanndd pprroocceeeeddss tthhrroouugghh tthhee pprroocceessss ooff
ppuurrcchhaassiinngg aa bbooookk ffrroomm tthhee ssiittee
- 28. SScceennaarriioo:: CCSSRRFF AAttttaacckk
MMaalliicciioouuss uusseerr ddiissccoovveerrss::
SShhee mmuusstt lloogg iinn ttoo mmaakkee aa ppuurrcchhaassee
AAfftteerr sseelleeccttiinngg aa bbooookk ffoorr ppuurrcchhaassee,, sshhee cclliicckkss tthhee bbuuyy
bbuuttttoonn,, wwhhiicchh rreeddiirreeccttss hheerr ttoo cchheecckkoouutt..pphhpp
SShhee sseeeess tthhaatt tthhee aaccttiioonn ttoo cchheecckkoouutt..pphhpp iiss aa PPOOSSTT aaccttiioonn
bbuutt wwoonnddeerrss wwhheetthheerr ppaassssiinngg ppaarraammeetteerrss ttoo cchheecckkoouutt..pphhpp
tthhrroouugghh tthhee qquueerryy ssttrriinngg ((GGEETT)) wwiillll wwoorrkk
WWhheenn ppaassssiinngg tthhee ssaammee ffoorrmm vvaalluueess tthhrroouugghh tthhee qquueerryy ssttrriinngg
((ii..ee.. cchheecckkoouutt..pphhpp??iissbbnn==00331122886633555511&&qqttyy==11)),, sshhee nnoottiicceess
tthhaatt sshhee hhaass,, iinn ffaacctt,, ssuucccceessssffuullllyy ppuurrcchhaasseedd aa bbooookk
- 29. SScceennaarriioo:: CCSSRRFF AAttttaacckk
WWiitthh tthhiiss kknnoowwlleeddggee,, tthhee mmaalliicciioouuss uusseerr ccaann ccaauussee
ootthheerrss ttoo mmaakkee ppuurrcchhaasseess aatt yyoouurr ssiittee wwiitthhoouutt tthheeiirr
kknnoowwlleeddggee..
<<iimmgg
ssrrcc==""hhttttpp::////eexxaammppllee..oorrgg//cchheecckkoouutt..pphhpp
??iissbbnn==00331122886633555511&&qqttyy==11"" //>>
- 31. TTookkeenn MMeetthhoodd
<<??pphhpp
sseessssiioonn__ssttaarrtt(());;
$$ttookkeenn == mmdd55((uunniiqqiidd((rraanndd(()),, TTRRUUEE))));;
$$__SSEESSSSIIOONN[[’’ttookkeenn’’]] == $$ttookkeenn;;
??>>
<<ffoorrmm aaccttiioonn==""cchheecckkoouutt..pphhpp"" mmeetthhoodd==""PPOOSSTT"">>
<<iinnppuutt ttyyppee==""hhiiddddeenn"" nnaammee==""ttookkeenn"" vvaalluuee==""<<??pphhpp
eecchhoo $$ttookkeenn;; ??>>"" />>
<<!!---- RReemmaaiinnddeerr ooff ffoorrmm ---->>
<</ffoorrmm>>
- 32. TTookkeenn CChheecckkiinngg
iiff ((iisssseett(($$__SSEESSSSIIOONN[[’’ttookkeenn’’]]))
&&&& iisssseett(($$__PPOOSSTT[[’’ttookkeenn’’]]))
&&&& $$__PPOOSSTT[[’’ttookkeenn’’]] ==== $$__SSEESSSSIIOONN[[’’ttookkeenn’’]]))
{{
// TTookkeenn iiss vvaalliidd,, ccoonnttiinnuuee pprroocceessssiinngg ffoorrmm ddaattaa
}}
- 33. DDaattaabbaassee SSeeccuurriittyy
AAttttaacckkss oonn ddaattaabbaasseess vviiaa wweebb aapppplliiccaattiioonnss iiss
ccoommmmoonnllyy ddoonnee vviiaa SSQQLL iinnjjeeccttiioonnss
OOccccuurrss wwhheenn aa mmaalliicciioouuss uusseerr
eexxppeerriimmeennttss oonn aa ffoorrmm ttoo ggaaiinn
iinnffoorrmmaattiioonn aabboouutt aa ddaattaabbaassee
- 34. DDaattaabbaassee SSeeccuurriittyy
AAfftteerr ggaaiinniinngg ssuuffffiicciieenntt kknnoowwlleeddggee —— uussuuaallllyy
ffrroomm ddaattaabbaassee eerrrroorr mmeessssaaggeess —— tthhee
aattttaacckkeerr iiss eeqquuiippppeedd ttoo eexxppllooiitt tthhee ffoorrmm ffoorr
aannyy ppoossssiibbllee vvuullnneerraabbiilliittiieess bbyy iinnjjeeccttiinngg SSQQLL
iinnttoo ffoorrmm ffiieellddss
- 35. EExxaammppllee:: SSQQLL IInnjjeeccttiioonn
<<ffoorrmm mmeetthhoodd==""llooggiinn..pphhpp"" aaccttiioonn==""PPOOSSTT"">>
UUsseerrnnaammee:: <<iinnppuutt ttyyppee==""tteexxtt"" nnaammee==""uusseerrnnaammee"" />><<bbrr
/>>
PPaasssswwoorrdd:: <<iinnppuutt ttyyppee==""ppaasssswwoorrdd""
nnaammee==""ppaasssswwoorrdd"" />><<bbrr />>
<<iinnppuutt ttyyppee==""ssuubbmmiitt"" vvaalluuee==""LLoogg IInn"" />>
<</ffoorrmm>>
- 36. EExxaammppllee:: SSQQLL IInnjjeeccttiioonn
$$uusseerrnnaammee == $$__PPOOSSTT[[’’uusseerrnnaammee’’]];;
$$ppaasssswwoorrdd == mmdd55(($$__PPOOSSTT[[’’ppaasssswwoorrdd’’]]));;
$$ssqqll == ""SSEELLEECCTT ** FFRROOMM uusseerrss
WWHHEERREE uusseerrnnaammee == ’’{{$$uusseerrnnaammee}}’’ ANNDD
ppaasssswwoorrdd == ’’{{$$ppaasssswwoorrdd}}’’"";;
/** ddaattaabbaassee ccoonnnneeccttiioonn aanndd qquueerryy ccooddee **/
iiff ((ccoouunntt(($$rreessuullttss)) >> 00))
{{
// SSuucccceessssffuull llooggiinn aatttteemmpptt
}}
- 37. SSQQLL IInnjjeeccttiioonn
uusseerrnnaammee’’ OORR 11 == 11 ––--
QQuueerryy bbeeccoommeess::
SSEELLEECCTT **
FFRROOMM uusseerrss
WWHHEERREE uusseerrnnaammee == ’’uusseerrnnaammee’’ OORR 11 == 11
----’’ ANNDD
ppaasssswwoorrdd == ’’dd4411dd88ccdd9988ff0000bb220044ee99880000999988eeccff88442277ee’’
- 38. SSQQLL IInnjjeeccttiioonn:: RRiisskk MMiittiiggaattiioonn
PPrrooppeerrllyy ffiilltteerriinngg iinnppuutt aanndd eessccaappiinngg tthhee
oouuttppuutt ffoorr SSQQLL wwiillll hheellpp mmiinniimmzzee tthhee rriisskk ooff aann aattttaacckk
TToo eessccaappee oouuttppuutt ffoorr aann SSQQLL qquueerryy,, uussee tthhee ddrriivveerr--
ssppeecciiffiicc **__eessccaappee__ssttrriinngg(()) ffuunnccttiioonn ffoorr yyoouurr
ddaattaabbaassee..
- 39. BBiinnddiinngg
$$qquueerryy == ''sseelleecctt nnaammee,, ddiissttrriicctt ffrroomm cciittyy
wwhheerree ccoouunnttrryyccooddee==??'';;
iiff (($$ssttmmtt == $$ddbb-->>pprreeppaarree(($$qquueerryy)) ))
{{
$$ccoouunnttrryyccooddee == ''AUUSS'';;
$$ssttmmtt-->>bbiinndd__ppaarraamm((""ss"",, $$ccoouunnttrryyccooddee));;
$$ssttmmtt-->>eexxeeccuuttee(());;
$$ssttmmtt-->>bbiinndd__rreessuulltt(($$nnaammee,, $$ddiissttrriicctt));;
wwhhiillee (($$ssttmmtt-->>ffeettcchh(())))
{{
eecchhoo $$nnaammee..'',, ''..$$ddiissttrriicctt;;
eecchhoo ''<<bbrr />>'';;
}}
$$ssttmmtt-->>cclloossee(());;
}}
$$ddbb-->>cclloossee(());;
- 40. SSeessssiioonn SSeeccuurriittyy
WWhheerreeaass mmoosstt ooff tthhee ootthheerr aattttaacckkss ccaann bbee pprreevveenntteedd
bbyy ffiilltteerriinngg iinnppuutt aanndd eessccaappiinngg oouuttppuutt,, sseessssiioonn
aattttaacckkss ccaannnnoott
IInnsstteeaadd,, iitt iiss nneecceessssaarryy ttoo ppllaann ffoorr tthheemm aanndd iiddeennttiiffyy
ppootteennttiiaall pprroobblleemm aarreeaass ooff yyoouurr aapppplliiccaattiioonn
- 41. SScceennaarriioo:: SSeessssiioonn
WWhheenn aa uusseerr ffiirrsstt eennccoouunntteerrss aa ppaaggee iinn yyoouurr
aapppplliiccaattiioonn tthhaatt ccaallllss sseessssiioonn__ssttaarrtt(()),, aa
sseessssiioonn iiss ccrreeaatteedd ffoorr tthhee uusseerr.. PPHHPP ggeenneerraatteess aa
rraannddoomm sseessssiioonn iiddeennttiiffiieerr ttoo iiddeennttiiffyy tthhee uusseerr,, aanndd
tthheenn iitt sseennddss aa SSeett--CCooookkiiee hheeaaddeerr ttoo tthhee cclliieenntt..
- 42. SScceennaarriioo:: SSeessssiioonn
BByy ddeeffaauulltt,, tthhee nnaammee ooff tthhiiss ccooookkiiee iiss PPHHPPSSEESSSSIIDD,,
bbuutt iitt iiss ppoossssiibbllee ttoo cchhaannggee tthhee ccooookkiiee nnaammee iinn
pphhpp..iinnii oorr bbyy uussiinngg tthhee sseessssiioonn__nnaammee(())
ffuunnccttiioonn
OOnn ssuubbsseeqquueenntt vviissiittss,, tthhee cclliieenntt iiddeennttiiffiieess tthhee uusseerr
wwiitthh tthhee ccooookkiiee,, aanndd tthhiiss iiss hhooww tthhee aapppplliiccaattiioonn
mmaaiinnttaaiinnss ssttaattee
- 43. SSeessssiioonn FFiixxaattiioonn
AAcctt ooff sseettttiinngg tthhee sseessssiioonn iiddeennttiiffiieerr mmaannuuaallllyy tthhrroouugghh
tthhee qquueerryy ssttrriinngg,, ffoorrcciinngg tthhee uussee ooff aa ppaarrttiiccuullaarr sseessssiioonn
<<aa hhrreeff==""hhttttpp:://eexxaammppllee..oorrgg/iinnddeexx..pphhpp??
PPHHPPSSEESSSSIIDD==11223344"">>CClliicckk hheerree<</aa>>
- 44. SSeessssiioonn FFiixxaattiioonn
WWhhiillee tthhee uusseerr aacccceesssseess yyoouurr ssiittee tthhrroouugghh tthhiiss
sseessssiioonn,, tthheeyy mmaayy pprroovviiddee sseennssiittiivvee iinnffoorrmmaattiioonn oorr
eevveenn llooggiinn ccrreeddeennttiiaallss
IIff tthhee uusseerr llooggss iinn wwhhiillee uussiinngg tthhee pprroovviiddeedd sseessssiioonn
iiddeennttiiffiieerr,, tthhee aattttaacckkeerr mmaayy bbee aabbllee ttoo ““rriiddee”” oonn tthhee
ssaammee sseessssiioonn aanndd ggaaiinn aacccceessss ttoo tthhee uusseerr’’ss aaccccoouunntt..
- 45. SSeessssiioonn FFiixxaattiioonn:: RRiisskk
MMiittiiggaattiioonn
EEvveerryy ttiimmee aa uusseerr’’ss aacccceessss lleevveell cchhaannggeess,, iitt iiss
nneecceessssaarryy ttoo rreeggeenneerraattee tthhee sseessssiioonn iiddeennttiiffiieerr
sseessssiioonn__ssttaarrtt(());;
// IIff tthhee uusseerr llooggiinn iiss ssuucccceessssffuull,, rreeggeenneerraattee tthhee
sseessssiioonn IIDD
iiff ((aauutthheennttiiccaattee(())))
{{
sseessssiioonn__rreeggeenneerraattee__iidd(());;
}}
- 46. SSeessssiioonn HHiijjaacckkiinngg
GGeenneerriicc tteerrmm uusseedd ttoo ddeessccrriibbee aannyy mmeeaannss
bbyy wwhhiicchh aann aattttaacckkeerr ggaaiinnss aa uusseerr’’ss
vvaalliidd sseessssiioonn iiddeennttiiffiieerr ((rraatthheerr tthhaann
pprroovviiddiinngg oonnee ooff hhiiss//hheerr oowwnn))
- 47. SSeessssiioonn HHiijjaacckkiinngg
FFoorr eexxaammppllee,, ssuuppppoossee tthhaatt aa uusseerr llooggss iinn.. IIff
tthhee sseessssiioonn iiddeennttiiffiieerr iiss rreeggeenneerraatteedd,, tthheeyy
hhaavvee aa nneeww sseessssiioonn IIDD.. WWhhaatt iiff aann aattttaacckkeerr
ddiissccoovveerrss tthhiiss nneeww IIDD aanndd aatttteemmppttss ttoo
uussee iitt ttoo ggaaiinn aacccceessss tthhrroouugghh tthhaatt uusseerr’’ss
sseessssiioonn?? IItt iiss tthheenn nneecceessssaarryy ttoo uussee ootthheerr
mmeeaannss ttoo iiddeennttiiffyy tthhee uusseerr..
- 48. SSeessssiioonn HHiijjaacckkiinngg:: RRiisskk
MMiittiiggaattiioonn
OOnnee wwaayy ttoo iiddeennttiiffyy tthhee uusseerr iinn aaddddiittiioonn ttoo tthhee sseessssiioonn
iiddeennttiiffiieerr iiss ttoo cchheecckk vvaarriioouuss rreeqquueesstt hheeaaddeerrss sseenntt
bbyy tthhee cclliieenntt
OOnnee rreeqquueesstt hheeaaddeerr tthhaatt iiss ppaarrttiiccuullaarrllyy hheellppffuull aanndd
ddooeess nnoott cchhaannggee bbeettwweeeenn rreeqquueessttss iiss tthhee UUsseerr--
AAggeenntt hheeaaddeerr
- 50. RRiisskk MMiittiiggaattiioonn:: CChheecckk
iiff (($$__SSEESSSSIIOONN[[’’uusseerr__aaggeenntt’’]] !==
$$__SSEERRVVEERR[[’’HHTTTTPP__UUSSEERR__AAGGEENNTT’’]]))
{{
//// FFoorrccee uusseerr ttoo lloogg iinn aaggaaiinn
eexxiitt;;
}}
- 51. FFiillee SSyysstteemm SSeeccuurriittyy
PPHHPP hhaass tthhee aabbiilliittyy ttoo ddiirreeccttllyy aacccceessss tthhee
ffiilleessyysstteemm aanndd eevveenn eexxeeccuuttee sshheellll ccoommmmaannddss
- 52. RReemmoottee CCooddee IInnjjeeccttiioonn
OOccccuurrss wwhheenn aann aattttaacckkeerr iiss aabbllee ttoo ccaauussee yyoouurr
aapppplliiccaattiioonn ttoo eexxeeccuuttee PPHHPP ccooddee ooff tthheeiirr
cchhoooossiinngg..==
- 53. SSiimmppllee IInncclluuddee && EExxppllooiitt
iinncclluuddee ""{{$$__GGEETT[[’’sseeccttiioonn’’]]}}//ddaattaa..iinncc..pphhpp"";;
hhttttpp::////eexxaammppllee..oorrgg//??sseeccttiioonn==hhttttpp%%33AA%%22FF
%%22FFeevviill..eexxaammppllee..oorrgg%%22FFaattttaacckk..iinncc%%33FF
iinncclluuddee
""hhttttpp::////eevviill..eexxaammppllee..oorrgg//aattttaacckk..iinncc??//ddaattaa..iinncc..pphhpp"";;
- 54. RReemmoottee CCooddee IInnjjeeccttiioonn:: RRiisskk
MMiittiiggaattiioonn
FFiilltteerriinngg aallll iinnppuutt aanndd nneevveerr uussiinngg ttaaiinntteedd ddaattaa iinn
aann iinncclluuddee oorr rreeqquuiirree ssttaatteemmeenntt
- 55. CCoonnttrroolllleedd IInnppuutt
$$cclleeaann == aarrrraayy(());;
$$sseeccttiioonnss == aarrrraayy((’’hhoommee’’,, ’’nneewwss’’,, ’’pphhoottooss’’,, ’’bblloogg’’));;
iiff ((iinn__aarrrraayy(($$__GGEETT[[’’sseeccttiioonn’’]],, $$sseeccttiioonnss))))
{{
$$cclleeaann[[’’sseeccttiioonn’’]] == $$__GGEETT[[’’sseeccttiioonn’’]];;
}}
eellssee
{{
$$cclleeaann[[’’sseeccttiioonn’’]] == ’’hhoommee’’;;
}}
iinncclluuddee ""{{cclleeaann[[’’sseeccttiioonn’’]]}}//ddaattaa..iinncc..pphhpp"";;