13.07.2015 Views

этом - Xakep Online

этом - Xakep Online

этом - Xakep Online

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

34 ÃËÎÁÀËÜÍÀß ÝÏÈÄÅÌÈß ÑÏÅÖ 02-07âàêöèíà äëÿ ñàéòàÑîçäàíèå ìíîãîóðîâíåâîé çàùèòû îò âçëîìàâåá-ïðèëîæåíèé«ÌÎÉ ÑÀÉÒ — ÌÎß ÊÐÅÏÎÑÒÜ» — ÒÀÊÈÌ ÄÎËÆÅÍ ÁÛÒÜ ÄÅÂÈÇ ÂÑÅÕ ÂÅÁ-ÐÀÇÐÀÁÎÒ×ÈÊÎÂ.  ÝÒÎÉ ÑÒÀÒÜÅ ß ÐÀÑÑÊÀÆÓ, ÊÀÊ ÊÀÌÅÍÜ ÇÀ ÊÀÌÍÅÌ È ÊÈÐÏÈ× ÇÀÊÈÐÏÈ×ÎÌ ÏÎÑÒÐÎÈÒÜ ÒÀÊÓÞ ÊÐÅÏÎÑÒÜ. ÌÛ ÍÀ×ÍÅÌ Ñ ÇÀÙÈÒÛ ÍÀ ÑÒÎÐÎÍÅ ÊËÈÅÍÒÀÈ ÇÀÊÎÍ×ÈÌ ÎÁÎÐÎÍÎÉ ÑÅÐÂÅÐÍÎÉ ×ÀÑÒÈ.Áîðèñ Âîëüôñîíborisvolfson@gmail.com http://splendot.comòðè êðóãà îáîðîíû íà ñòîðîíå êëèåíòà. Íà÷íåìñ ñàìîãî ïðîñòîãî — ñ îòïóãèâàíèÿ «þíûõ õàêåðîâ»;). Èòàê, ìàëîëåòíåå ñîçäàíèå îòêðûëî áðàóçåð,çàøëî íà òâîé ñàéò, íàøëî ôîðìó è ïûòàåòñÿñâîèìè êîâàðíûìè ðó÷êàìè ââåñòè òóäà ÷òî-íèáóäüíåõîðîøåå. Ïðåæäå âñåãî, âîñïîëüçóåìñÿ âîçìîæíîñòÿìèÿçûêà HTML. Äëÿ íà÷àëà âûáåðåì ïîäõîäÿùèéýëåìåíò óïðàâëåíèÿ, íàïðèìåð, åñëè íàäîâûáðàòü «ìåñòî æèòåëüñòâà», òî áåçîïàñíåé áóäåòèñïîëüçîâàòü âûïàäàþùèé ñïèñîê (à íå ñòðîêó ââîäà).×òî êàñàåòñÿ ïîñëåäíåé, òî æåëàòåëüíî âûáðàòüè ìàêñèìàëüíóþ äëèíó äëÿ ñòðîêè ââîäà.Âòîðîé êðóã îáîðîíû áóäåò ðàáîòàòü íà JavaScript,êîòîðûé ïîìîæåò íàì ïîäâåðãíóòü ñòðîãîìóàóäèòó âñå, ÷òî ïîëüçîâàòåëþ âçäóìàåòñÿ ââåñòèâ íàøè ôîðìû. Ìû ìîæåì, íàïðèìåð, óáåäèòüñÿ,÷òî ââåäåí äåéñòâèòåëüíî e-mail, à íå SQL-çàïðîñ,êîòîðûé âûäàñò çëîóìûøëåííèêó ïàðîëèâñåõ ïîëüçîâàòåëåé.Òðåòèé è ñàìûé ïîñëåäíèé êðóã èñïîâåäóåòèäåîëîãèþ AJAX, ïîýòîìó íå ÿâëÿåòñÿ ÷èñòî êëèåíòñêèì.Ïîñëå çàïîëíåíèÿ î÷åðåäíîãî ïîëÿ ìû ñäåëàåìçàïðîñ íà ñåðâåð î ïðàâèëüíîñòè ââåäåííûõ äàííûõ.Ðàññìîòðèì ïëþñû è ìèíóñû äàííîãî ïîäõîäà.Îí, áåçóñëîâíî, îòïóãíåò âçëîìùèêîâ-äèëåòàíòîâ,êîòîðûå íå óìåþò ïîëüçîâàòüñÿ íè÷åì êðîìåáðàóçåðà. Îòìå÷ó òàêæå åùå îäèí ïðèÿòíûé ýôôåêò— óëó÷øåíèå þçàáèëèòè ñàéòà, âåäü ïðè íåïðàâèëüíîìçàïîëíåíèè ôîðìû ïîëüçîâàòåëü åùåäî åå îòïðàâêè ïîëó÷èò ñîîòâåòñòâóþùåå ñîîáùåíèå.Ìèíóñ ó çàùèòû íà ñòîðîíå êëèåíòà òîëüêîîäèí — îáîéòè åå ïðîùå ïàðåíîé ðåïû, òàê ÷òî ñîõðàíÿåìñòðàíèöó ó ñåáÿ íà ñåðâåðå è îòêëþ÷àåì âáðàóçåðå JavaScript. À åùå ëó÷øå — ðàáîòàåì íå÷åðåç áðàóçåð, à ñ ïîìîùüþ ñêðèïòà. Òàê ÷òî çàùèòóíà ñòîðîíå êëèåíòà ìîæíî ñ÷èòàòü ðâîì âîêðóãíàøåé êðåïîñòè. À ïîñêîëüêó ðîâ — ýòî ñàìîå-ñàìîåíà÷àëî, òî ïðèñòóïèì ê âîçâåäåíèþ ñòåí =).çàùèùàåìñÿ íà ñåðâåðå. Ñðàçó îãîâîðþñü,êàêèå àñïåêòû ÿ îñâåùó â ñëåäóþùåé ÷àñòè ñòàòüè.Çäåñü òû íå óñëûøèøü íè î òîíêèõ íàñòðîéêàõ áåçîïàñíîñòèâ Ëèíóêñ, íè î òîì, êàê ïðàâèëüíî ñîáðàòüçàùèùåííûé àïà÷ è êàêèå ìîäóëè ê íåìó ïðèêðóòèòü.Íå áóäåò ïðîèçíåñåíî íè ñëîâà î íàñòðîéêàõPHP (ëþáèìûå ìîè magic quotes). Îñòàâèì ýòèäåëà ñèñàäìèíàì, — îíè íå çðÿ ñâîé õëåá åäÿò, àÏÐÎÑÒÀÂÜ ÎÏÖÈÈ DISPLAY_ERRORS = OFF È LOG_ERRORS = ONÄËß ÎÒÊËÞ×ÅÍÈß ÏÎÊÀÇÀ ÎØÈÁÎÊ È ÄËß ÂÊËÞ×ÅÍÈßÈÕ ÆÓÐÍÀËÈÐÎÂÀÍÈßñàìè çàéìåìñÿ ïðîãðàììèðîâàíèåì. Áðîñèì áåãëûéâçãëÿä íà ñõåìó, ïî êîòîðîé íàì ïðåäñòîèò ðàáîòàòüäàëüøå (ñìîòðè ñõåìó 1).ïðîâåðêà âõîäíûõ äàííûõ. Äëÿ íà÷àëà îïðåäåëèì,îòêóäà íàø ñêðèïò ìîæåò ïîëó÷àòü ïîòåíöèàëüíîîïàñíóþ èíôîðìàöèþ. Ïåðâîå, ÷òî ïðèõîäèòíà óì — ýòî ôîðìû, êîòîðûå çàïîëíÿåò ïîëüçîâàòåëü.Äàííûå èç íèõ ìîãóò ïåðåäàâàòüñÿ äâóìÿìåòîäàìè. Ïðè èñïîëüçîâàíèè ìåòîäà POST äàííûåïîñòóïàþò ñêðèïòó íà ñòàíäàðòíûé âõîä, à åñëèïðèìåíÿåòñÿ ìåòîä GET, òî èíôîðìàöèÿ ïåðåäàåòñÿâ àäðåñíîé ñòðîêå:URLhttp://www.example.ru/index.php?variable=valueÒû ëþáèøü ïå÷åíüå? Íåò? À âîò âçëîìùèêè ëþáÿò,âåäü ÷àñòü èíôîðìàöèè ïåðåäàåòñÿ èìåííî ÷åðåçêóêè. Îáû÷íî ýòî èäåíòèôèêàòîð ñåññèè è äðóãàÿèíôîðìàöèÿ, êîòîðàÿ ñîõðàíÿåòñÿ âî âðåìÿ ñåðôèíãàþçåðà ïî ñàéòó. Äëÿ ñêðèïòà, íàïèñàííîãî íàPHP, âñå âûøåîïèñàííûå ìåòîäû ïîëó÷åíèÿ âíåøíåéèíôîðìàöèè ïðàêòè÷åñêè ðàâíîçíà÷íû, ïîýòîìóòû ìîæåøü èñïîëüçîâàòü ìàññèâ $_REQUEST(ïðàâäà, ýòî íå î÷åíü áåçîïàñíîå ðåøåíèå).Âðîäå áû âñå, íî íåò! Ïîäóìàé, îòêóäà åùåñêðèïò ïîëó÷àåò äàííûå? Êîíå÷íî, èç ÁÄ (èëè èçðåäêèõ íûí÷å òåêñòîâûõ ôàéëîâ)! Âîçíèêàåò çàêî-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!