SlideShare a Scribd company logo
SSeeccuurriinngg PPHHPP AApppplliiccaattiioonnss 
RReeggggiiee NNiiccccoolloo SSaannttooss 
UUPP IITTDDCC 
AAddaapptteedd ffrroomm RReeggnnaarrdd RRaaqquueeddaann’’ss sseett ooff sslliiddeess
OOuuttlliinnee 
DDeeffiinniittiioonn 
BBaassiicc PPrriinncciipplleess 
IInnppuutt FFiilltteerriinngg 
WWhhiitteelliisstt vvss.. BBllaacckklliisstt AApppprrooaacchh 
EEssccaappiinngg OOuuttppuutt
OOuuttlliinnee 
PPrreeppaarreedd SSttaatteemmeennttss 
CCllaassssiiffiiccaattiioonnss ooff AAttttaacckkss 
FFoorrmm SSppooooffiinngg 
XXSSSS ((CCrroossss--SSiittee SSccrriippttiinngg)) 
CCSSRRFF ((CCrroossss--SSiittee RReeqquueesstt FFoorrggeerryy))
OOuuttlliinnee 
CCllaassssiiffiiccaattiioonnss ooff AAttttaacckkss 
SSQQLL IInnjjeeccttiioonn 
SSeessssiioonn FFiixxaattiioonn 
SSeessssiioonn HHiijjaacckkiinngg 
RReemmoottee CCooddee IInnjjeeccttiioonn
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
BBaassiicc PPrriinncciipplleess 
CCoonnssiiddeerr iilllleeggiittiimmaattee uusseess ooff yyoouurr aapppplliiccaattiioonn 
EEdduuccaattee yyoouurrsseellff 
IIff nnootthhiinngg eellssee,, ffiilltteerr aallll eexxtteerrnnaall ddaattaa
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..
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..
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
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
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>>
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’’]];; 
}}
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
EExxaammppllee:: EEssccaappiinngg OOuuttppuutt 
$$hhttmmll == aarrrraayy();; 
$$hhttmmll[[’’mmeessssaaggee’’]] == hhttmmlleennttiittiieess($$uusseerr__mmeessssaaggee,, 
EENNTT__QQUUOOTTEESS,, ’’UUTTFF--88’’);; 
eecchhoo $$hhttmmll[[’’mmeessssaaggee’’]];;
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();;
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
SSppooooffeedd FFoorrmmss 
TThhee eeaassiieesstt wwaayy iiss ttoo ssiimmppllyy ccooppyy aa ttaarrggeett ffoorrmm aanndd 
eexxeeccuuttee iitt ffrroomm aa ddiiffffeerreenntt llooccaattiioonn
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>>
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>>
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
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
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>>
EExxaammppllee:: MMaalliicciioouuss IInnppuutt ffoorr 
XXSSSS 
<<ssccrriipptt>> 
ddooccuummeenntt..llooccaattiioonn == 
““hhttttpp::////eexxaammppllee..oorrgg//ggeettccooookkiieess..pphhpp??ccooookkiieess==““ 
++ ddooccuummeenntt..ccooookkiiee;; 
<<//ssccrriipptt>> 
////bbrriinnggss ttoo aa nneeww llooccaattiioonn wwiitthh ccooookkiieess
XXSSSS:: RRiisskk MMiittiiggaattiioonn 
XXSSSS ffaaiillss iiff aapppplliiccaattiioonn eessccaappeess oouuttppuutt
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
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
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
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
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"" //>>
CCSSRRFF:: RRiisskk MMiittiiggaattiioonn 
FFoorrccee tthhee uussee ooff PPOOSSTT oovveerr GGEETT 
UUssee ttookkeenn mmeetthhoodd
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>>
TTookkeenn CChheecckkiinngg 
iiff ((iisssseett(($$__SSEESSSSIIOONN[[’’ttookkeenn’’]])) 
&&&& iisssseett(($$__PPOOSSTT[[’’ttookkeenn’’]])) 
&&&& $$__PPOOSSTT[[’’ttookkeenn’’]] ==== $$__SSEESSSSIIOONN[[’’ttookkeenn’’]])) 
{{ 
// TTookkeenn iiss vvaalliidd,, ccoonnttiinnuuee pprroocceessssiinngg ffoorrmm ddaattaa 
}}
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
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
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>>
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 
}}
SSQQLL IInnjjeeccttiioonn 
uusseerrnnaammee’’ OORR 11 == 11 ––-- 
QQuueerryy bbeeccoommeess:: 
SSEELLEECCTT ** 
FFRROOMM uusseerrss 
WWHHEERREE uusseerrnnaammee == ’’uusseerrnnaammee’’ OORR 11 == 11 
----’’ ANNDD 
ppaasssswwoorrdd == ’’dd4411dd88ccdd9988ff0000bb220044ee99880000999988eeccff88442277ee’’
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..
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(());;
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
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..
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
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>>
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..
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(());; 
}}
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))
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..
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
RRiisskk MMiittiiggaattiioonn:: AAfftteerr llooggggiinngg 
iinn 
$$__SSEESSSSIIOONN[[’’uusseerr__aaggeenntt’’]] == 
$$__SSEERRVVEERR[[’’HHTTTTPP__UUSSEERR__AAGGEENNTT’’]];;
RRiisskk MMiittiiggaattiioonn:: CChheecckk 
iiff (($$__SSEESSSSIIOONN[[’’uusseerr__aaggeenntt’’]] !== 
$$__SSEERRVVEERR[[’’HHTTTTPP__UUSSEERR__AAGGEENNTT’’]])) 
{{ 
//// FFoorrccee uusseerr ttoo lloogg iinn aaggaaiinn 
eexxiitt;; 
}}
FFiillee SSyysstteemm SSeeccuurriittyy 
PPHHPP hhaass tthhee aabbiilliittyy ttoo ddiirreeccttllyy aacccceessss tthhee 
ffiilleessyysstteemm aanndd eevveenn eexxeeccuuttee sshheellll ccoommmmaannddss
RReemmoottee CCooddee IInnjjeeccttiioonn 
OOccccuurrss wwhheenn aann aattttaacckkeerr iiss aabbllee ttoo ccaauussee yyoouurr 
aapppplliiccaattiioonn ttoo eexxeeccuuttee PPHHPP ccooddee ooff tthheeiirr 
cchhoooossiinngg..==
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"";;
RReemmoottee CCooddee IInnjjeeccttiioonn:: RRiisskk 
MMiittiiggaattiioonn 
FFiilltteerriinngg aallll iinnppuutt aanndd nneevveerr uussiinngg ttaaiinntteedd ddaattaa iinn 
aann iinncclluuddee oorr rreeqquuiirree ssttaatteemmeenntt
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"";;
OOuuttlliinnee 
DDeeffiinniittiioonn 
BBaassiicc PPrriinncciipplleess 
IInnppuutt FFiilltteerriinngg 
WWhhiitteelliisstt vvss.. BBllaacckklliisstt AApppprrooaacchh 
EEssccaappiinngg OOuuttppuutt
OOuuttlliinnee 
PPrreeppaarreedd SSttaatteemmeennttss 
CCllaassssiiffiiccaattiioonnss ooff AAttttaacckkss 
FFoorrmm SSppooooffiinngg 
XXSSSS ((CCrroossss--SSiittee SSccrriippttiinngg)) 
CCSSRRFF ((CCrroossss--SSiittee RReeqquueesstt FFoorrggeerryy))
OOuuttlliinnee 
CCllaassssiiffiiccaattiioonnss ooff AAttttaacckkss 
SSQQLL IInnjjeeccttiioonn 
SSeessssiioonn FFiixxaattiioonn 
SSeessssiioonn HHiijjaacckkiinngg 
RReemmoottee CCooddee IInnjjeeccttiioonn

More Related Content

What's hot (20)

PPT
Framework of training – steps involved
begraj SIWAL
 
PPT
смешанные дистрофии англ.
nizhgma.ru
 
PPT
Culvert inspection and investigation
Eric Lestock Kay
 
PPT
Planificacion preoperatoria
Leonardo Favio Chávez Gasque
 
PPT
Creating the Startup The Accounting Panorama
Steve Lines
 
PPT
Planificacion preoperatoria de cadera
Leonardo Favio Chávez Gasque
 
PPT
Globally harmonized system (ghs) classification and labeling
Arthur Francis Alcantara
 
PPT
Aqua Eagles Presentation August 25th 2014
amandaleaallen
 
POT
Synapseindia reviews
saritasingh19866
 
PDF
1 pdt tribunal international administratif
Rabah HELAL
 
PPT
A evolução da criminologia
Fabricio Maciel
 
PPT
Maurizio Elia. I problemi psichiatrici in età adulta.
claudiopagano
 
PPT
System biblioteczny Mateusz
kasiasss
 
PPT
Anastesi lokal
teckong
 
PPT
Spinal injuries
Alexander Bardis
 
PPT
Partes de una placa madre
ferrerasmarlon
 
PPT
Agency and The Use of Electronic Media
Steve Lines
 
PDF
Cursos Polilab - Degradação e estabilização de polímeros aula 04
Fernando Jose Novaes
 
PPT
Caldeiras power point
fabiosgomes
 
Framework of training – steps involved
begraj SIWAL
 
смешанные дистрофии англ.
nizhgma.ru
 
Culvert inspection and investigation
Eric Lestock Kay
 
Planificacion preoperatoria
Leonardo Favio Chávez Gasque
 
Creating the Startup The Accounting Panorama
Steve Lines
 
Planificacion preoperatoria de cadera
Leonardo Favio Chávez Gasque
 
Globally harmonized system (ghs) classification and labeling
Arthur Francis Alcantara
 
Aqua Eagles Presentation August 25th 2014
amandaleaallen
 
Synapseindia reviews
saritasingh19866
 
1 pdt tribunal international administratif
Rabah HELAL
 
A evolução da criminologia
Fabricio Maciel
 
Maurizio Elia. I problemi psichiatrici in età adulta.
claudiopagano
 
System biblioteczny Mateusz
kasiasss
 
Anastesi lokal
teckong
 
Spinal injuries
Alexander Bardis
 
Partes de una placa madre
ferrerasmarlon
 
Agency and The Use of Electronic Media
Steve Lines
 
Cursos Polilab - Degradação e estabilização de polímeros aula 04
Fernando Jose Novaes
 
Caldeiras power point
fabiosgomes
 

Viewers also liked (11)

PPTX
Code and Memory Optimisation Tricks
Sperasoft
 
PDF
NYPF14 Report - CDA
Chaudhry Talha Waseem
 
PDF
Unity3D Scripting: State Machine
Sperasoft
 
PDF
Unity introduction for programmers
Noam Gat
 
PPTX
Game Development with Unity
davidluzgouveia
 
PDF
Unity Programming
Sperasoft
 
PPTX
Unity3D Programming
Michael Ivanov
 
PPTX
Unity is strength presentation slides
Texas Health Care Association
 
PPT
Unity presentation
guest8f07923a
 
PPTX
Unity 3d Basics
Chaudhry Talha Waseem
 
PPTX
Introduction to Unity3D and Building your First Game
Sarah Sexton
 
Code and Memory Optimisation Tricks
Sperasoft
 
NYPF14 Report - CDA
Chaudhry Talha Waseem
 
Unity3D Scripting: State Machine
Sperasoft
 
Unity introduction for programmers
Noam Gat
 
Game Development with Unity
davidluzgouveia
 
Unity Programming
Sperasoft
 
Unity3D Programming
Michael Ivanov
 
Unity is strength presentation slides
Texas Health Care Association
 
Unity presentation
guest8f07923a
 
Unity 3d Basics
Chaudhry Talha Waseem
 
Introduction to Unity3D and Building your First Game
Sarah Sexton
 
Ad

Similar to Securing PHP Applications (20)

PDF
A preparation - for sea
Rabah HELAL
 
PPT
Interview Questions-Basics of Electronics and Communication Engg
sanjeeev bahadur, m.tech,mba
 
PPT
Penetration testing: A proactive approach to secure computing - Eric Vanderbu...
Eric Vanderburg
 
PPT
CS201- Introduction to Programming- Lecture 36
Bilal Ahmed
 
ODP
Puppet and Icinga 101
Kris Buytaert
 
PDF
Obstacles connaissement
Rabah HELAL
 
ODP
State of devops and drupal 2014
Kris Buytaert
 
PPT
Cyber Security Innovation IMHO v4
W Fred Seigneur
 
PPT
Cyber Security Innovation IMHO v4
W Fred Seigneur
 
ODP
Catch-me if you can - TOR tricks for bots, shells and general hacking
Jan Seidl
 
PPT
Slideshow empowerment 50
Paul Robere
 
PDF
Conf en1 artes electroniques
Rabah HELAL
 
PPT
Cyber securityinnovationimho v3
W Fred Seigneur
 
PPT
Cyber security innovation_imho v3
W Fred Seigneur
 
PPT
In introduction to Key Performance Indicators
Paul Robere
 
PPT
Anaesthetic machine imp
Ruta Angel
 
PDF
Puppet Camp Düsseldorf 2014: Monitoring with Puppet (Beginner)
Puppet
 
ODP
Open Source Monitoring in 2014, from #monitoringssucks to #monitoringlove and...
Kris Buytaert
 
ODP
Monitoring (with) puppet
Kris Buytaert
 
PPT
introduccion basica php
Pablo Mamani
 
A preparation - for sea
Rabah HELAL
 
Interview Questions-Basics of Electronics and Communication Engg
sanjeeev bahadur, m.tech,mba
 
Penetration testing: A proactive approach to secure computing - Eric Vanderbu...
Eric Vanderburg
 
CS201- Introduction to Programming- Lecture 36
Bilal Ahmed
 
Puppet and Icinga 101
Kris Buytaert
 
Obstacles connaissement
Rabah HELAL
 
State of devops and drupal 2014
Kris Buytaert
 
Cyber Security Innovation IMHO v4
W Fred Seigneur
 
Cyber Security Innovation IMHO v4
W Fred Seigneur
 
Catch-me if you can - TOR tricks for bots, shells and general hacking
Jan Seidl
 
Slideshow empowerment 50
Paul Robere
 
Conf en1 artes electroniques
Rabah HELAL
 
Cyber securityinnovationimho v3
W Fred Seigneur
 
Cyber security innovation_imho v3
W Fred Seigneur
 
In introduction to Key Performance Indicators
Paul Robere
 
Anaesthetic machine imp
Ruta Angel
 
Puppet Camp Düsseldorf 2014: Monitoring with Puppet (Beginner)
Puppet
 
Open Source Monitoring in 2014, from #monitoringssucks to #monitoringlove and...
Kris Buytaert
 
Monitoring (with) puppet
Kris Buytaert
 
introduccion basica php
Pablo Mamani
 
Ad

More from Reggie Niccolo Santos (15)

PDF
Introduction to Web 2.0
Reggie Niccolo Santos
 
PDF
UI / UX Engineering for Web Applications
Reggie Niccolo Santos
 
PPTX
Computability - Tractable, Intractable and Non-computable Function
Reggie Niccolo Santos
 
PDF
Algorithms - Aaron Bloomfield
Reggie Niccolo Santos
 
PPT
Program Logic Formulation - Ohio State University
Reggie Niccolo Santos
 
PDF
Abstract Data Types
Reggie Niccolo Santos
 
PDF
Computational Thinking and Data Representations
Reggie Niccolo Santos
 
PDF
Number Systems
Reggie Niccolo Santos
 
PDF
Introduction to Game Development
Reggie Niccolo Santos
 
PPT
Application Testing
Reggie Niccolo Santos
 
PPT
Application Security
Reggie Niccolo Santos
 
PPT
MySQL Transactions
Reggie Niccolo Santos
 
PPT
MySQL Cursors
Reggie Niccolo Santos
 
PPT
MySQL Views
Reggie Niccolo Santos
 
Introduction to Web 2.0
Reggie Niccolo Santos
 
UI / UX Engineering for Web Applications
Reggie Niccolo Santos
 
Computability - Tractable, Intractable and Non-computable Function
Reggie Niccolo Santos
 
Algorithms - Aaron Bloomfield
Reggie Niccolo Santos
 
Program Logic Formulation - Ohio State University
Reggie Niccolo Santos
 
Abstract Data Types
Reggie Niccolo Santos
 
Computational Thinking and Data Representations
Reggie Niccolo Santos
 
Number Systems
Reggie Niccolo Santos
 
Introduction to Game Development
Reggie Niccolo Santos
 
Application Testing
Reggie Niccolo Santos
 
Application Security
Reggie Niccolo Santos
 
MySQL Transactions
Reggie Niccolo Santos
 
MySQL Cursors
Reggie Niccolo Santos
 

Securing PHP Applications

  • 1. SSeeccuurriinngg PPHHPP AApppplliiccaattiioonnss RReeggggiiee NNiiccccoolloo SSaannttooss UUPP IITTDDCC AAddaapptteedd ffrroomm RReeggnnaarrdd RRaaqquueeddaann’’ss sseett ooff sslliiddeess
  • 2. OOuuttlliinnee DDeeffiinniittiioonn BBaassiicc PPrriinncciipplleess IInnppuutt FFiilltteerriinngg WWhhiitteelliisstt vvss.. BBllaacckklliisstt AApppprrooaacchh EEssccaappiinngg OOuuttppuutt
  • 3. OOuuttlliinnee PPrreeppaarreedd SSttaatteemmeennttss CCllaassssiiffiiccaattiioonnss ooff AAttttaacckkss FFoorrmm SSppooooffiinngg XXSSSS ((CCrroossss--SSiittee SSccrriippttiinngg)) CCSSRRFF ((CCrroossss--SSiittee RReeqquueesstt FFoorrggeerryy))
  • 4. OOuuttlliinnee CCllaassssiiffiiccaattiioonnss ooff AAttttaacckkss SSQQLL IInnjjeeccttiioonn SSeessssiioonn FFiixxaattiioonn SSeessssiioonn HHiijjaacckkiinngg RReemmoottee CCooddee IInnjjeeccttiioonn
  • 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
  • 6. BBaassiicc PPrriinncciipplleess CCoonnssiiddeerr iilllleeggiittiimmaattee uusseess ooff yyoouurr aapppplliiccaattiioonn EEdduuccaattee yyoouurrsseellff IIff nnootthhiinngg eellssee,, ffiilltteerr aallll eexxtteerrnnaall ddaattaa
  • 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
  • 24. XXSSSS:: RRiisskk MMiittiiggaattiioonn XXSSSS ffaaiillss iiff aapppplliiccaattiioonn eessccaappeess oouuttppuutt
  • 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"" //>>
  • 30. CCSSRRFF:: RRiisskk MMiittiiggaattiioonn FFoorrccee tthhee uussee ooff PPOOSSTT oovveerr GGEETT UUssee ttookkeenn mmeetthhoodd
  • 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
  • 49. RRiisskk MMiittiiggaattiioonn:: AAfftteerr llooggggiinngg iinn $$__SSEESSSSIIOONN[[’’uusseerr__aaggeenntt’’]] == $$__SSEERRVVEERR[[’’HHTTTTPP__UUSSEERR__AAGGEENNTT’’]];;
  • 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"";;
  • 56. OOuuttlliinnee DDeeffiinniittiioonn BBaassiicc PPrriinncciipplleess IInnppuutt FFiilltteerriinngg WWhhiitteelliisstt vvss.. BBllaacckklliisstt AApppprrooaacchh EEssccaappiinngg OOuuttppuutt
  • 57. OOuuttlliinnee PPrreeppaarreedd SSttaatteemmeennttss CCllaassssiiffiiccaattiioonnss ooff AAttttaacckkss FFoorrmm SSppooooffiinngg XXSSSS ((CCrroossss--SSiittee SSccrriippttiinngg)) CCSSRRFF ((CCrroossss--SSiittee RReeqquueesstt FFoorrggeerryy))
  • 58. OOuuttlliinnee CCllaassssiiffiiccaattiioonnss ooff AAttttaacckkss SSQQLL IInnjjeeccttiioonn SSeessssiioonn FFiixxaattiioonn SSeessssiioonn HHiijjaacckkiinngg RReemmoottee CCooddee IInnjjeeccttiioonn