HTTP-Àóòåíòèôèêàöèÿ
Àâòîð: | Àðòåìüåâ Ñåðãåé Èãîðåâè÷ |
ICQ: | 438856621 |
email: | _spin_@bk.ru |
HTTP-àóòåíòèôèêàöèÿ (èëè HTTP Basic-àâòîðèçàöèÿ) ÷àñòî èñïîëüçóåòñÿ äëÿ çàùèòû îòäåëüíûõ ðàçäåëîâ ñàéòà (íàïðèìåð, ðàçäåëà óïðàâëåíèÿ). Äëÿ îãðàíèçàöèè çàùèòû èñïîëüçóþòñÿ ñðåäñòâà web-ñåðâåðà. Ìû ðàññìîòðèì íàñòðîéêó íà ïðèìåðå Apache.
Ñåðâåð Apache ïðè îáðàùåíèè ê ëþáîìó êàòàëîãó ñåðâåðà àâòîìàòè÷åñêè ïðîâåðÿåò íàëè÷èå â í¸ì ôàéëà .htaccess (èìÿ ôàéëà íà÷èíàåòñÿ ñ òî÷êè). Ýòî ñïåöèàëüíûé ôàéë, â êîòîðîì ìîæíî çàäàòü íàñòðîéêè âåá-ñåðâåðà, êîòîðûå îí áóäåò ïðèìåíÿòü ê äàííîìó êàòàëîãó è âñåì åãî ïîäêàòàëîãàì. Áîëüøèíñòâî ñîâðåìåííûõ ïðîâàéäåðîâ ðàçðåøàþò èñïîëüçîâàíèå ôàéëîâ .htaccess, ïóñòü è ñ íåêîòîðûìè îãðàíè÷åíèÿìè. Óçíàòü òî÷íåå î äîïóñòèìûõ äèðåêòèâàõ .htaccess âû ñìîæåòå èç îïèñàíèÿ ñâîåãî òàðèôíîãî ïëàíà èëè îò ñëóæáû òåõíè÷åñêîé ïîääåðæêè âàøåãî ïðîâàéäåðà.
Èòàê, ðàññìîòðèì êîíêðåòíûé ïðèìåð - çàùèòó îäíîãî èç ðàçäåëîâ ñàéòà. Ñîçäàäèì â êàòàëîãå web-ñòðàíèö ñàéòà äèðåêòîðèþ members è ñîõðàíèì â íå¸ ôàéë .htaccess ñëåäóþùåãî ñîäåðæàíèÿ:
DirectoryIndex index.htm members.php AuthName "òîëüêî äëÿ çàðåãèñòðèðîâàííûõ ïîëüçîâàòåëåé" AuthType Basic AuthUserFile /home/mySite/config/.htpasswd Require valid-user
Îñîáåííîñòü ôàéëà .htaccess - îí äîëæåí áûòü ñîõðàí¸í â ôîðìàòå Unix. Ñäåëàòü ýòî ìîæíî ïðè ïîìîùè íåêîòîðûõ òåêñòîâûõ ðåäàêòîðîâ, íàïðèìåð AkelPad.
Äèðåêòèâû ôàéëà .htaccess çàïèñûâàþòñÿ â âèäå <èìÿ_äèðåêòèâû><ïðîáåë><ñïèñîê_çíà÷åíèé>.  äàííîì ñëó÷àå ìû èñïîëüçîâàëè ïÿòü äèðåêòèâ:
DirectoryIndex - çàäà¸ò ñòðàíèöó ïî-óìîë÷àíèþ. Ìîæíî ïåðå÷èñëèòü íåñêîëüêî âàðèàíòîâ ÷åðåç çàïÿòóþ. Ýòà ñòðàíèöà áóäåò îòîáðàæàòüñÿ, êîãäà ïîëüçîâàòåëü ââîäèò àäðåñ áåç óêçàíèÿ ôàéëà (íàïðèìåð, http://localhost/members/).  äàííîì ñëó÷àå Apache áóäåò èñêàòü ñíà÷àëà index.htm, çàòåì members.php. Êàê òîëüêî ôàéë íàéäåí - îí çàãðóæàåòñÿ, à ïîèñê ïðåêðàùàåòñÿ. Åñëè íè îäíà ñòðàíèöà íå íàéäåíà - ïîëüçîâàòåëü ïîëó÷èò îøèáêó 404 "Äîêóìåíò íå íàéäåí".
AuthName îïðåäåëÿåò ïðèãëàøåíèå, êîòðîå ïîëüçîâàòåëü óâèäèò â îêíå ââîäà ïàðîëÿ. Çíà÷åíèå äîëæíî áûòü çàêëþ÷åíî â äâîéíûå êàâû÷êè.
AuthType îïðåäåëÿåò ðåæèì àâòîðèçàöèè. Âîçìîæíûõ çíà÷åíèé âñåãî äâà: Basic è Digest. Ìåòîä Digest èñïîëüçóåò äëÿ çàùèòû áîëüøîå êîëè÷åñòâî ïàðàìåòðîâ ñåðâåðà è êëèåíòà, îáåñïå÷èâàåò áîëåå âûñîêóþ çàùèù¸ííîñòü, íî â áîëüøèíñòâå áðàóçåðîâ íå ïîääåðæèâàåòñÿ è èñïîëüçóåòñÿ òîëüêî â ñïåöèàëèçèðîâàííûõ ñèñòåìàõ. Äëÿ Èíòåðíåò-ïîëüçîâàòåëåé ïðèìåíÿåòñÿ òîëüêî ðåæèì Basic. Õîòÿ îí è îáåñïå÷èâàåò äîñòóï òîëüêî ïî ëîãèíó è ïàðîëþ, çàòî åãî ïîääåðæèâàþò ïðàêòè÷åñêè âñå ñóùåñòâóþùèå áðàóçåðû.
Äèðåêòèâà AuthUserFile çàäà¸ò ìåñòîïîëîæåíèå ôàéëà ñ ïàðîëÿìè. Çäåñü íåîáõîäèìî óêàçàòü ïîëíûé ïóòü ê ôàéëó, íà÷èíàÿ ñ êîðíåâîãî êàòàëîãà ñàéòà.  öåëÿõ áåçîïàñíîñòè ýòîò ôàéë îáû÷íî ðàñïîëàãàþò çà ïðåäåëàìè êàòàëîãà web-ñòðàíèö è ñêðèïòîâ (ò.å. êîðíåâîãî êàòàëîãà web-ñòðàíèö).
Ïîñëåäíèé àòðèáóò Require çàäà¸ò ïàðàìåòðû äîïóñêà ïîëüçîâàòåëåé. Çäåñü ìîæíî çàäàòü ÷åðåç ïðîáåë èìåíà ïîëüçîâàòåëåé èç ôàéëà .htpasswd, êîòîðûì ðàçðåøåí äîñòóï ê êàòàëîãó. Åñëè óêàçàòü çíà÷åíèå valid-user, òî äîñòóï áóäåò ïðåäîñòàâëÿòüñÿ ëþáîìó ïîëüçîâàòåëþ, äàííûå êîòîðîãî åñòü â ôàéëå ïàðîëåé.
Ôàéë .htpasswd ñîäåðæèò ñïèñîê ëîãèíîâ è èõ çàøèôðîâàííûå ïàðîëè. Äëÿ åãî ñîçäàíèÿ íåîáõîäèìî èñïîëüçîâàòü ñïåöèàëüíóþ óòèëèòó htpasswd.exe, êîòîðóþ ìîæíî áåñïëàòíî ñêà÷àòü â Èíòåðíåòå. Êðîìå òîãî, ýòà óòèëèòà ðàñïðîñòðàíÿåòñÿ âìåñòå ñ äèñòðèáóòèâîì Apache (ïîäêàòàëîã bin êàòàëîãà óñòàíîâêè).
Äëÿ ñîçäàíèÿ íîâîãî ôàéëà è äîáàâëåíèÿ â íåãî ïîëüçîâàòåëÿ admin c ïàðîëåì TestPassword çàïóñòèòå ýòó óòèëèòó ñî ñëåäóþùèìè ïàðàìåòðàìè:
htpasswd.exe -cb ".htpasswd" admin TestPassword
 òîì æå êàòàëîãå, îòêóäà âû çàïóñêàëè htaccess.exe ïîÿâèòñÿ ôàéë .htpasswd, êîòîðûé íåîáõîäèìî ñêîïèðîâàòü íà ñåðâåð.
Íàïðèìåð, ó âàñ íà ñåðâåðå åñòü ñëåäóþùàÿ ñòðóêòóðà êàòàëîãîâ:
/home/mySite/ public_html/ members/ images/ styles/ config/
Çäåñü public_html - êîðíåâîé êàòàëîã web-ñòðàíèö, à /home/mySite/ - êîðíåâîé êàòàëîã âàøåãî ñàéòà (åãî âû ñìîæåòå óâèäåòü òîëüêî ÷åðåç FTP- èëè SSH-ïîäêëþ÷åíèå).
Ò.ê. íàì íåîáõîäèìî çàùèòèòü òîëüêî êàòàëîã members, òî ìû äîëæíû ñêîïèðîâàòü â íåãî íàø ôàéë .htaccess, à ôàéë ñ ïàðîëÿìè - ïîìåñòèòü â config.
Òåïåðü â áðàóçåðå íàáèðàåì ñòðîêó http://mySite/members è (åñëè âñ¸ ñäåëàëè ïðàâèëüíî) - áðàóçåð ïîïðîñèò íàñ ââåñòè ëîãèí è ïàðîëü. Ââîäèì ñâîè ëîãèí è ïàðîëü è ïîëó÷àåì äîñòóï ê ñåðâåðó, à åñëè íàæì¸ì "Îòìåíà" - ïîëó÷èì ñîîáùåíèå î òîì, ÷òî ñåðâåð òðåáóåò àâòîðèçàöèè.
Íàïîñëåäîê íåáîëüøîé øòðèõ - çàïðåòèì ïðîñìîòð ÷åðåç áðàóçåð âñåõ ôàéëîâ, íà÷èíàþùèõñÿ ñ ".ht". Îáû÷íî òàêàÿ çàùèòà âêëþ÷åíà äëÿ âñåãî ñåðâåðà, íî ïîäñòðàõîâàòüñÿ íèêîãäà íå ïîìåùàåò. Äëÿ ýòîãî ñäåëàåì åù¸ îäèí ôàéë .htaccess è ïîìåñòèì åãî â êîðíåâîé êàòàëîã âåá-ñòðàíèö, ïðåäâàðèòåëüíî âïèñàâ ñëåäóþùóþ äèðåêòèâó:
<Files ~ "^.ht"> Order allow,deny Deny from all </Files>
Áîëåå ïîäðîáíîå îïèñàíèå äèðåêòèâ .htaccess ìîæíî íàéòè íà îôèöèàëüíîì ñàéòå Apache è ïðîñòî ñ ïîìîùüþ ïîèñêîâèêà, áëàãî îïèñàíèé è ïåðåâîäîâ îôèöèàëüíîé äîêóìåíòàöèè íà ðóññêèé ÿçûê óæå ñäåëàíî ìíîæåñòâî.
Íå ñòîèò çëîóïîòðåáëÿòü basic-àâòîðèçàöèåé. Áîëüøèíñòâî ïîëüçîâàòåëåé óæå ïðèâûêëè áûñòðî è ëåãêî ðåãèñòðèðîâàòüñÿ íà ñàéòàõ è óïðàâëÿòü ñâîèìè àêêàóíòàìè è ïàðîëÿìè, à Basic-àâòîðèçàöèÿ íå âñåãäà îáåñïå÷èâàåò ïðîñòîòó è íà䏿íîñòü òàêèõ ìàíèïóëÿöèé.