HTML, Excel, Word, SEOPHP êóðñ äëÿ ÷àéíèêîâ ⇒ HTTP-Àóòåíòèôèêàöèÿ

PHP äëÿ "÷àéíèêîâ"

Èíñòðóìåíòû
Âûáèðàåì IDE
Âûáèðàåì Web-ñåðâåð
Âûáèðàåì ÑÓÁÄ
Ñòðóêòóðà ÿçûêà PHP
Ïåðâûé øàã
Ñèíòàêñèñ
Òèïû äàííûõ
Ïåðåìåííûå è êîíñòàíòû
Îïåðàòîðû
Âûðàæåíèÿ
Óïðàâëÿþùèå ñòðóêòóðû
Ôóíêöèè
Êëàññû
Èñêëþ÷åíèÿ
Îøèáêè
Ìàññèâû
Ãëîáàëüíûå ìàññèâû
Cookies
Ñåññèè
Çàãðóçêà ôàéëîâ
Ðàáîòà ñ ôàéëàìè
Ðàáîòà ñ ôàéëàìè íà äèñêå
Ðàáîòà ñ äàííûìè â ôàéëå
Ïðèìåð óïðàâëåíèÿ ôàéëàìè
Ðàáîòà ñ áàçàìè äàííûõ
Ïîäêëþ÷åíèå
Àíàëèç ðåçóëüòàòîâ
Âûïîëíåíèå çàïðîñîâ
Îòêëþ÷åíèå
Ïðèìåð: îòñëåæèâàíèå ïîëüçîâàòåëåé
Ðàáîòà â ñåòè
Îòïðàâêà ïî÷òû
Áåçîïàñíîñòü
HTTP-àóòåíòèôèêàöèÿ
Çàùèòà ëîãèíîì è ïàðîëåì
Àâòîìàòèçàöèÿ
Ðåãóëÿðíûå âûðàæåíèÿ â PHP
Èíòåãðàöèÿ
PHP è JavaScript



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-àâòîðèçàöèÿ íå âñåãäà îáåñïå÷èâàåò ïðîñòîòó è íà䏿íîñòü òàêèõ ìàíèïóëÿöèé.

 



 íà÷àëî ñòðàíèöû



 íà÷àëî ñòðàíèöû