13.07.2015 Views

этом - Xakep Online

этом - Xakep Online

этом - Xakep Online

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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

36 ÃËÎÁÀËÜÍÀß ÝÏÈÄÅÌÈß ÑÏÅÖ 02-07ýêðàíèðóåì ñïåöñèìâîëû. Ñïåöñèìâîëû íàñ,ïðåæäå âñåãî, íå óñòðàèâàþò â òîì ñëó÷àå, êîãäàçàïèñè èíôîðìàöèè ïðîèçâîäÿòñÿ â áàçó äàííûõ,ïîñêîëüêó â íèõ íàâåðíÿêà êðîåòñÿ âåëèêîå-ïðåâåëèêîåçëî SQL-èíúåêöèé è XSS-àòàê.  ýòîìñìûñëå, PHP ïðåäëàãàåò íàì öåëûé àðñåíàëñðåäñòâ áîðüáû ñ ïîäîáíîãî ðîäà íåïðÿòíûìèóÿçâèìîñòÿìè. Âñå, ÷òî îò íàñ íåóêîñíèòåëüíî òðåáóåòñÿ— ýòî èñïîëüçîâàòü èõ. Ïðèâåäó ñïèñîê ôóíêöèé,êîòîðûå ñëåäóåò èñïîëüçîâàòü äëÿ ýêðàíèðîâàíèÿ(ñìîòðè òàáëèöó 1).Ïîõîæå, íàñòàëî âðåìÿ ðàññêàçàòü ïðî magic_quotes,î êîòîðûõ ÿ òîðæåñòâåííî îáåùàë ìîë-÷àòü â íà÷àëå ãëàâû. Ýòà îïöèÿ àâòîìàòè÷åñêèýêðàíèðóåò äàííûå èç ìàññèâîâ $_GET, $_POST,$_COOKIE. Çíà÷èò, ïðè íàïèñàíèè êîäà íàì íàäîýòî ó÷èòûâàòü, ÷òîáû íå äîáàâèòü äâà ðàçà îáðàòíûåñëåøè:PHPfunction escape_smart($value){if (get_magic_quotes_gpc()) {$value = stripslashes($value);}$value =mysql_real_escape_string($value);}return $value;BBcode è wiki. Èíîãäà âñå-òàêè íåîáõîäèìîäàòü ïîëüçîâàòåëþ âîçìîæíîñòü ôîðìàòèðîâàòüââåäåííûé èì òåêñò, íî ðàçðåøàòü íàïðÿìóþ ââîäèòüòåãè ñëèøêîì îïàñíî. Ñàìûì ïðîñòûì âûõîäîìáóäåò èñïîëüçîâàíèå êàêîé-ëèáî ðàçìåòêè, íà-ïðîâåðêà èñòî÷íèêàÊÎÃÄÀ ß ÐÀÑÑÊÀÇÛÂÀË Î ÇÀÙÈÒÅÍÀ ÊËÈÅÍÒÑÊÎÉ ÑÒÎÐÎÍÅ,ß ÎÃÎÂÎÐÈËÑß, ×ÒÎ ÑÒÐÀÍÈÖÓÌÎÆÍÎ ÑÎÕÐÀÍÈÒÜ ÍÀ ÄÐÓÃÎÌÑÅÐÂÅÐÅ ÈËÈ ËÎÊÀËÜÍÎÉ ÌÀØÈÍÅÈ ÏÎÄÏÐÀÂÈÒÜ, ÊÀÊ ÒÅÁÅ ÍÐÀÂÈÒÑß.ÍÎ ÝÒÓ ÁÐÅØÜ ÌÎÆÍÎ ÍÅÌÍÎÃÎÇÀËÀÒÀÒÜ, ÏÐÎÂÅÐßß, ÎÒÊÓÄÀ Ê ÍÀÌÏÐÈØÅË ÏÎËÜÇÎÂÀÒÅËÜ. ÄÅËÀÅÒÑßÝÒÎ ÏÐÈ ÏÎÌÎÙÈ ÏÅÐÅÌÅÍÍÎÉ$_SERVER[«HTTP_REFERER»], ÊÎÒÎÐÀßÊÀÊ ÐÀÇ È ÑÎÄÅÐÆÈÒ ÏÐÅÄÛÄÓÙÓÞÑÒÐÀÍÈÖÓ, À ÍÀÌ ÎÑÒÀÍÅÒÑß ÒÎËÜÊÎÏÐÎÂÅÐÈÒÜ, ÄÅÉÑÒÂÈÒÅËÜÍÎ ËÈÏÎËÜÇÎÂÀÒÅËÜ ÏÐÈØÅË ÎÒÒÓÄÀ.ÏÎËÈÒÈÊÀÁÅÇÎÏÀÑÍÎÑÒÈÄËßÏÎËÜÇÎÂÀÒÅËÅÉÂçëîìùèê ìîæåò ïûòàòüñÿ ñëîìàòüíå âåñü ñàéò, à òîëüêî ïîëó÷èòü äîñòóïê àêêàóíòó îòäåëüíîãî ïîëüçîâàòåëÿ. Èòóò âñòàåò âîïðîñ ñîöèàëüíîãî õàðàêòåðà.Ïîïðîáóåì ðåøèòü åãî ïðè ïîìîùèïðîãðàììèðîâàíèÿ ;).Äëÿ çàõâàòà àêêàóíòà õàêåðó íåîáõîäèìîçàâëàäåòü ëîãèíîì è ïàðîëåìïîëüçîâàòåëÿ. Ëîãèí îáû÷íî íàõîäèòñÿâî âñåîáùåì äîñòóïå è ñëóæèò èäåíòèôèêàòîðîìïîëüçîâàòåëÿ, à âîò ïàðîëü,ïî èäåå, çíàåò òîëüêî ñàì ïîëüçîâàòåëü.Òåïåðü öåëü ÿñíà — íàäî çàùèòèòüïàðîëü ;).Strong password. Ñàìûì «òóïûì»ìåòîäîì âçëîìà ïàðîëÿ ÿâëÿåòñÿ bruteforce,ïðîùå ãîâîðÿ, ïåðåáîð. Îáû÷íîäëÿ ïåðåáîðà èñïîëüçóþò ñëîâàðè, ëèáîïðîñòî ïåðåáèðàþò âñåâîçìîæíûåêîìáèíàöèè ïî çàäàííîé ìàñêå. Íàøåéïåðâîé çàäà÷åé áóäåò áîðüáà ñ ïîäáîðîì.Äëÿ ýòîãî ïàðîëü äîëæåí áûòü äîñòàòî÷íîäëèííûì — áîëåå 6 ñèìâîëîâè ñîäåðæàòü ðàçíîîáðàçíûå ñèìâîëû:öèôðû, ñòðî÷íûå è ïðîïèñíûå áóêâû.Ïî ìåðå íåîáõîäèìîñòè äëèíó ïàðîëÿìîæíî óâåëè÷èòü, à â íåîáõîäèìûåñèìâîëû äîáàâèòü åùå è çíàêè ïðåïèíàíèÿ.Ìàëåíüêèì ïðèìå÷àíèåì ê äàííîìóïàðàãðàôó áóäåò íåîáõîäèìîñòüáëîêèðîâàòü âõîä ïîëüçîâàòåëÿ íàñàéò (ìèíóò, ñêàæåì, íà 30) ïîñëå 3–5íåóäà÷íûõ ïîïûòîê ââîäà ëîãèíà è ïàðîëÿ. òàêîì ñëó÷àå âçëîìùèêó ïðèäåòñÿèñïîëüçîâàòü ïðîêñè, êîòîðûåïðè áîëüøîé íåîáõîäèìîñòè ìîæíîòàêæå áëîêèðîâàòü.Äëÿ áîëåå ìîùíîé ïðîâåðêè ïàðîëÿðåêîìåíäóþ èñïîëüçîâàòü ðàñøèðåíèåCrackLib. Îíî ïîçâîëÿåò ïðîãíàòüïàðîëü ïî ñëîâàðþ è îñóùåñòâèòü ðÿääîïîëíèòåëüíûõ ïðîâåðîê:PHP// Çàãðóæàåì ñëîâàðü$dictionary = crack_opendict('/usr/local/lib/pw_dict');// Ïðîâåðÿåì ïàðîëü$check = crack_check($dictionary,‘Q6g$b87gHjn5_4t5sdf!23HLayi');// Ïîëó÷àåì ðåçóëüòàò ïðîâåðêè$res = crack_getlastmessage();echo $res; // 'strong password'// Çàêðûâàåì ñëîâàðücrack_closedict($dictionary);Ñþäà æå îòíåñó òàêóþ âîçìîæíîñòü,êàê ñìåíà ïàðîëåé ÷åðåç îïðåäåëåííûéïðîìåæóòîê âðåìåíè. Òàêàÿ îïöèÿíå äàñò âçëîìùèêó âîçìîæíîñòüïîäáèðàòü ïàðîëü áðóòôîðñîì â òå-÷åíèå ãîäà.Àâòîãåíåðàöèÿ ïàðîëåé. Çà÷åì ìó-÷èòü ïîëüçîâàòåëåé è çàñòàâëÿòü èõïðèäóìûâàòü ïàðîëè äëèíîé â 10 áóêâè öèôð, êîãäà ïðîùå ýòî ñäåëàòü ïðîãðàììíî?Çàîäíî ìîæíî áóäåò ïðîâåðèòüïàðîëü íà óíèêàëüíîñòü, ÷òî åùåáîëüøå ïîâûñèò áåçîïàñíîñòü.Õåø îò ïàðîëåé. Ïðåäñòàâü ñåáåïîäîáíóþ êàðòèíó — âçëîìùèê ïîëó-÷èë äîñòóï íà ÷òåíèå áàçû äàííûõïîëüçîâàòåëåé òâîåãî ñàéòà… è íèêàêíå ìîæåò âîñïîëüçîâàòüñÿ ýòîé èíôîðìàöèåé;). Ýòî íå ìîÿ áîëüíàÿôàíòàçèÿ, à ðåàëüíîñòü, åñëè âìåñòîïàðîëåé òû õðàíèøü èõ õåøè. Õåø —ýòî «óíèêàëüíàÿ» ñòðîêà (èëè ÷èñëî),êîòîðàÿ ãåíåðèðóåòñÿ ïî ïàðîëþ ïðèïîìîùè ñïåöèàëüíîé ôóíêöèè, íàïðèìåðmd5. Ïî õåøó âîññòàíîâèòüñàìó ñòðîêó ïðàêòè÷åñêè íåâîçìîæíî,ïîýòîìó ýòîò ñïîñîá õðàíåíèÿ ïàðîëåéî÷åíü íàäåæåí.Îïàñíûå äåéñòâèÿ. Áàçó ïîëüçîâàòåëåéó íàñ óæå êðàëè, òåïåðü ïðåäïîëîæèì,÷òî âçëîìùèê ñìîã çàâëàäåòüñåññèåé ïîëüçîâàòåëÿ, òî åñòü ðàáîòàåòïîä åãî ëîãèíîì. Ñèòóàöèÿ òèïè÷íàÿ— ìîæíî ïðîñòî ïîäîæäàòü, ïîêà÷åëîâåê âûéäåò èç-çà êîìïà, åñëèðå÷ü èäåò îá îôèñå, èëè ïîïðîáîâàòüóêðàñòü êóêè ñ èäåíòèôèêàòîðîì ñåññèè.Ïåðâîå, ÷òî ïîïûòàåòñÿ ñäåëàòüçëîé õàêåð, — ýòî ñìåíèòü ïàðîëü.Èìåííî ïðè ïîäîáíûõ äåéñòâèÿõ íàäîïîâòîðíî çàïðàøèâàòü ïàðîëü ïîëüçîâàòåëÿ,âåäü åñëè âçëîìàíà ñåññèÿ,íàì óäàñòñÿ ïðåäîòâðàòèòü êðóïíûéóùåðá. Ê îïàñíûì äåéñòâèÿì ñòîèòîòíåñòè: óäàëåíèå àêêàóíòà, êðóïíûåôèíàíñîâûå òðàíçàêöèè, ìàññîâóþðàññûëêó ïèñåì è ïðî÷åå.Ïðèâÿçêà ñåññèè ê IP. ×òîáû âçëîìùèêóáûëî ñëîæíåé çàâëàäåòü ñåññèåé,íàäî êðîìå èäåíòèôèêàòîðà õðàíèòüòàêæå IP ïîëüçîâàòåëÿ. Òàêîéïîäõîä ñäåëàåò íåâîçìîæíûì ðàáîòóñ äðóãîãî êîìïüþòåðà äàæå ïðè èìåþùåìñÿïðàâèëüíîì èäåíòèôèêàòîðåñåññèè.ÎÄÍÀÊÎ Ó ÂÇËÎÌÙÈÊÀ ÆÅ ÅÑÒÜÄÂÅ ÂÎÇÌÎÆÍÎÑÒÈ — ËÈÁÎ ÏÐÎÑÒÎÈÑÏÎËÜÇÎÂÀÒÜ TELNET È Ñ ÅÃÎÏÎÌÎÙÜÞ ÑÔÎÐÌÈÐÎÂÀÒÜ ÇÀÏÐÎÑ,ËÈÁÎ ÍÀÏÈÑÀÒÜ ÑÊÐÈÏÒ È ÈÑÏÎËÜÇÎ-ÂÀÒÜ ÅÃÎ, ÂÅÄÜ ÇÍÀ×ÅÍÈÅ ÏÅÐÅÌÅÍ-ÍÎÉ $_SERVER[«HTTP_REFERER»]ÔÎÐÌÈÐÓÅÒÑß ÍÀ ÑÒÎÐÎÍÅ ÊËÈÅÍÒÀ.ÂÛÂÎÄ: ÒÀÊÀß ÇÀÙÈÒÀ ÑÏÎÑÎÁÍÀÎÒÏÓÃÍÓÒÜ ËÈØÜ ÍÅÏÐÎÔÅÑÑÈÎÍÀËÜ-ÍÎÃÎ ÂÇËÎÌÙÈÊÀ, À ÏÐÎÔÅÑÑÈÎÍÀËÓÎÍÀ ÏÐÎÑÒÎ ÄÎÑÒÀÂÈÒ ÍÅÁÎËÜØÎÅÍÅÓÄÎÁÑÒÂÎ.ïðèìåð BBcode èëè wiki.  òàêîì ñëó÷àå ïðè ñîçäàíèèâõîäíûõ äàííûõ ïîëüçîâàòåëü èñïîëüçóåò îãðàíè÷åííûéÿçûê ðàçìåòêè, êîòîðûé çàòåì êîíâåðòèðóåòñÿâ HTML. Ïîëüçîâàòåëþ ìû äàäèì âîçìîæíîñòüâûäåëÿòü øðèôò ïîëóæèðíûì è êóðñèâîì:BBcode[b]Çäåñü áóäåò ïîëóæèðíûé òåêñò,[i]à çäåñü — ïîëóæèðíûé êóðñèâ[/i][/b],a ýòî îáû÷íûé òåêñò.Äàëüøå íàäî ïðîñòî çàìåíèòü òåãè íà èõ HTML-àíàëîãè.Êàæäûé òåã íàäî îáðàáàòûâàòü îòäåëüíî, à íåïðîñòî ñìåíèòü êâàäðàòíûå ñêîáêè íà óãëîâûå. Òîãäàíà âûõîäå ìû ïîëó÷èì:HTMLÇäåñü áóäåò ïîëóæèðíûé òåêñò,à çäåñü — ïîëóæèðíûéêóðñèâ,a ýòî îáû÷íûé òåêñò.Òàêîé ïîäõîä ïîçâîëÿåò äîâîëüíî ïðîñòî èçáåæàòüóãðîçû XSS-èíúåêöèé, äà è ðåàëèçóåòñÿ îí áåç îñîáûõíàïðÿãîâ. Äðóãîé âàðèàíò (ìåíåå áåçîïàñíûé)— ðàçðåøèòü ïîëüçîâàòåëþ ââîäèòü òîëüêîîïðåäåëåííûå òåãè, à îñòàëüíûå îòñåèâàòü. Òîò æåïðèìåð áóäåò òåïåðü âûãëÿäåòü òàê:

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

Saved successfully!

Ooh no, something went wrong!