Htaccess se închide cu parolă. Crearea unui fișier de parolă htpasswd. Unde poate fi implementat?

Personal, folosesc .htaccess pentru a proteja prin parolă folderele site-ului meu. Parolă bună– o garanție de siguranță, aceasta este o axiomă!

Mai întâi, să ne uităm la un exemplu, apoi să explicăm ce înseamnă acesta:

necesită utilizator valid

Acest fișier trebuie plasat în directorul în care dorim să punem o parolă.

Directivă AuthName afișează un mesaj când vi se solicită o parolă, toate mesajele trebuie scrise pe o singură linie, sintaxa directivei este banală:

AuthName „VEZI TEXTUL”

Directivă AuthType selectează tipul de autentificare. Posibil următoarele tipuri: De bază sau Digera. Este posibil ca cel de-al doilea să nu fie acceptat de unele browsere, așa că nu este recomandat să îl utilizați.

AuthType Basic | Digera

AuthUserFile specifică numele fișierului cu parole pentru autentificarea utilizatorului (parolele din acest fișier vor fi criptate). Calea către fișierul cu parole este setată în raport cu rădăcina serverului web. Păstrați fișierul cu parole într-un folder care nu este accesibil utilizatorilor - (de preferință plasați acest fișier în afara ierarhiei site-ului dvs. - acest lucru este foarte punct important, deoarece va fi destul de dificil să-l spargeți, pentru că veți transfera toată responsabilitatea securității acestuia către colegul dvs. Furnizor de găzduire cu firewall-urile și sistemele sale de protecție).

Crea acest dosar posibil în două moduri. Dacă aveți un sistem de operare instalat Familia Windows puteți descărca un program care generează acest fișier. Sau conectați-vă la server prin SSH și utilizați utilitarul htpasswd. Sau utilizați același utilitar inclus cu serverul web Apache (dacă este instalat, dacă nu, descărcați pentru Win), folosind comanda de comandă șiruri de ferestre introduceți: htpasswd.exe -cm .htpasswd admin , Unde:

Cm sunt comenzi pentru a crea un fișier folosind MD5;

Htpasswd – numele fișierului care va fi creat;

admin – nume de utilizator.

După lansare, vi se va cere să introduceți o parolă și o confirmare. Ca rezultat, va fi creat un fișier .htpasswd ceva de genul asta:

admin:$apr1$9o0…..$3nAi6rAX1RtHDzL7PPW/i/

care corespunde autentificarii - admin si parola - parolă.

Apropo, în acest fel puteți închide nu numai directoare, ci și fişiere separate sau grupuri de fișiere. Când adăugați un utilizator la fișier existent echipă -cm trebuie schimbată în – m.

Dacă ne conectăm la server prin SSH și folosim utilitarul htpasswd fără parametri, vom vedea:

kjan ~ # htpasswd

htpasswd [-cmdps] nume de utilizator pentru fișierul de parole

htpasswd -b passwordfile nume utilizator parola

C Creați un fișier nou.

Toți parametrii acestei comenzi nu vor fi acoperiți aici, dar puteți citi detaliile singur rulând htpasswd V shell unix sau citind pagina de documentație Apache corespunzătoare.

Deci, inițial nu avem încă un fișier cu parole și trebuie să-l creăm:

kjan ~ # htpasswd -c authfile test1

Reintroduceți parola nouă

Adăugând parola pentru test utilizator1

După efectuarea acestei operaţii htpasswd va crea un fișier parolele, în care utilizatorul se va regăsi test1și parola sa criptată:

kjan ~ $ cat .authfile

test1:zgco1KREjBY8M

Și acum vrem să adăugăm un alt utilizator. Deoarece avem deja un fișier cu parole, pur și simplu nu vom folosi cheia "-c" :

kjan~ # htpasswd .authfile test2

Reintroduceți parola nouă:

Adăugarea parolei pentru testul utilizatorului2

kjan~ $ cat .authfile

test1:zgco1KREjBY8M

test2:eN3uA6t0kzV1c

Să revenim la descrierea directivelor de parole ale directorului. Directivă Solicita definește utilizatorii care pot obține acces

Solicitați USER_NAME | utilizator valid

Arătând utilizator valid permiteți accesul tuturor utilizatorilor enumerați în fișierul cu parole.

AuthName „Zona protejată, necesită autorizare”

AuthUserFile /home/t/test/.authfile

necesită utilizator valid

Trebuie amintit că, cu o astfel de restricție de acces, parolele sunt transmise prin canale de comunicare către formă deschisăși în anumite circumstanțe poate fi interceptat de atacatori. Prin urmare, din motive de securitate, se recomandă organizarea accesului la zonele restricționate ale site-ului web printr-o conexiune SSL securizată.

Folosind modulele standard Apache, este posibil să solicitați utilizatorului o autentificare și o parolă atunci când încearcă să acceseze pagina specifică sau catalog. Accesul va fi permis dacă login-ul și parola sunt prezente într-un fișier special.

Crearea unui fișier cu parole

Fișierul de acreditări este de obicei numit .htpasswdși se află într-un director la care accesul trebuie restricționat. În mod implicit, Apache refuză accesul la toate fișierele care încep cu .ht, deci fișierul cu parole este ca fișierul .htaccess, nu poate fi citit de niciun vizitator al site-ului dvs.

Fiecare linie a fișierului stochează date despre un utilizator. Login și parola criptată sunt separate prin două puncte. Exemplu:

Administrator:YFC5nYLiUI2ig vasya:bnqw1eZHP2Ujs

Un utilitar este folosit pentru a cripta parolele htpasswd, care vine la pachet cu Apache. Pentru a crea fișier nou cu date despre
utilizator admin, introduceți comanda:

$ htpasswd -c .htpasswd admin

Pentru a adăuga la un fișier existent, utilizați comanda:

$ htpasswd .htpasswd vasya

După lansare, utilitarul vă va cere să introduceți parola de două ori și, dacă se potrivesc, se vor adăuga datele utilizatorului.

Restricție de acces

Acum, pentru a activa cererea de autorizare atunci când încercați să accesați, trebuie să faceți modificări în fișierul de configurare sau în fișier .htaccess. Vă reamintesc că utilizarea fișierelor .htaccess nedorit, deoarece reduce performanța serverului.

AuthType Basic AuthName „Zonă administrativă” AuthUserFile /var/www/example.com/admin/.htpasswd Necesită utilizator valid

Va trebui să schimbați calea directorului (Directory), calea către fișierul cu parole (AuthUserFile) și șirul de prompt (AuthName) care este afișat utilizatorului atunci când i se solicită o parolă. Puteți afla semnificația altor directive din documentația Apache.

După ce faceți modificări în fișierul de configurare, asigurați-vă că reporniți Apache.

Note

ÎN în acest exemplu Este oferită cea mai simplă opțiune pentru restricționarea accesului. În general, capacitățile sistemului de autentificare Apache sunt mult mai largi. De exemplu, utilizatorii pot fi împărțiți în grupuri, parolele sunt stocate într-o bază de date sau solicitate printr-un protocol special de la alte servere. Vă recomandăm să vă familiarizați cu toate caracteristicile din documentația Apache.

Exemplul arată cel mai simplu tip autentificare - De bază. Trebuie să știți că în acest caz parola este transmisă de la client la server într-o formă clară, necriptată. Dacă acest lucru nu vă convine, puteți utiliza un alt tip de autentificare sau protocolul HTTPS.

Să luăm în considerare mod interesant protecția site-ului, sau directorul (dosarul) site-ului, de exemplu cu partea administrativă.

Această metodă este destul de simplă, dar în același timp este foarte fiabilă, cu condiția să se folosească „gazduire normală”, deoarece acest tip de protecție prin parolă prin htaccess și htpasswd este construit folosind serverul Apache însuși.

Un alt avantaj al acestei metode este că directorul în sine, plus subfolderele și absolut toate fișierele din interiorul acestui folder sunt protejate cu o parolă. De asemenea, fără autorizație nu va fi posibilă trimiterea niciunuia $_POST nici $_GET solicitări către fișiere protejate... absolut nimic.

În dezavantaj, această metodă este de obicei potrivită dacă nu sunt mulți utilizatori care vor avea acces... deoarece generarea unei parole pentru fiecare utilizator separat va deveni plictisitoare foarte repede.

De ce nu? această metodă folosiți pe „penny hosting”?

Cert este că, de regulă, acest tip de găzduire presupune o calitate slabă Configurare Apache, iar făcând acest lucru puteți pur și simplu deschide calea atacatorilor către directorul „protejat”.

Și deci să începem...

Instrucțiuni pentru protejarea prin htaccess și htpasswd

Vom avea nevoie de:
  • Acces FTP
  • Având drepturi de a crea și edita fișierul htaccess
  • Utilitar pentru crearea și criptarea parolei htpasswd.exe,
Creați un fișier pentru a proteja htaccess

Cel mai simplu mod de a crea acest fișier este utilizarea unui blocnotes obișnuit. Clic clic dreapta mouse-ul pe desktop: create -> document text. Îl deschidem folosind obișnuit Blocnotes Windows. Clic Fişier -> Salvați ca...

Crearea unui fișier de parolă htpasswd
Copiați utilitarul descărcat la rădăcina unității C. În continuare veți înțelege de ce exact la rădăcină.

Lansați consola („Start” -> „Run”, scrieți cmdși faceți clic pe „OK”). Accesați rădăcina unității C (scrieți comanda CD/).

În linia de jos, unde cursorul clipește, ar trebui să spună „C:\>” - suntem la rădăcina unității C.

Acum scrieți următoarea comandă:

Htpasswd -cm .htpasswd admin
La sfârșitul comenzii, admin este numele de utilizator (Login). Puteți folosi orice (litere engleze, fără spații).

Vi se va solicita să introduceți o parolă. Intră trecând la Aspect în limba engleză. Apăsați enter pe tastatură și reintroduceți aceeași parolă. Intră din nou. Gata. Fişier .htpasswd creat în rădăcina unității C. Închideți consola.

Ne conectăm la site prin FTP și mergem la directorul pe care îl protejăm prin htaccess și htpasswd.

Transferăm fișierul creat .htpasswd la rădăcina acestui folder

Acum trebuie să aflăm cale absolută la fișierul .htpasswd de pe găzduire... dacă știți deja - bine, dacă nu, atunci iată de ce avem nevoie:

1. Lângă fișierul cu parole de pe găzduire, creați un fișier, de exemplu er2344fsdxaasdl.php
2. Deschideți fereastra pentru editarea acestui fișier și scrieți următorul cod:


3. Salvați și închideți.
4. Deschideți browserul și scrieți în bara de adrese

Http://www.site.ru/protected_directory/er2344fsdxaasdl.php
Apăsați enter. Și vedem masa mare Versiunea PHP și alte informații.

5. În stânga este o coloană cu parametri, în dreapta este o coloană cu valorile acestor parametri. Avem nevoie de valoarea parametrului SCRIPT_FILENAME. Să zicem că are valoarea:

/home/w/user/site.ru/public_html/protected_directory/er2344fsdxaasdl.php
Copiați această valoare undeva, fără numele fișierului nostru php, adică doar copiați asta:

/home/w/user/site.ru/public_html/protected_directory/
Aceasta este calea absolută către directorul nostru protejat. Fișierul nostru php er2344fsdxaasdl.php trebuie șters!

Procesul de protecție în sine prin htaccess și htpasswd
Acum să deschidem folosind fișierul notepad .htaccess pe desktop (sau oriunde l-ați salvat?). Intram in el:

AuthType Basic AuthName „Interfață de administrare” AuthUserFile /home/w/user/site.ru/public_html/protected_directory/.htpasswd necesită un utilizator valid nega de la toti
Vă rugăm să rețineți că AuthUserFile conține calea noastră absolută copiată plus numele fișierului.htpasswd

Salvăm modificările prin Ctrl+S sau „Fișier” -> „Salvare”.

Acum transferăm fișierul .htaccess modificat pe server la rădăcina folderului protejat, în același loc în care se află fișierul .htpasswd

Asta e tot. Directorul este protejat. Închideți browserul și lansați-l din nou.

Deschide fila cu adresă

Http://www.site.ru/protected_directory/
Ar trebui să vedeți o fereastră pentru introducerea numelui de utilizator și a parolei. Dacă acest lucru nu se întâmplă, atunci ați greșit undeva... faceți tot procesul din nou și cu mare atenție.

Încercați să introduceți nr parola corectași veți vedea un mesaj de eroare.

Sesiunea va dura până când închideți browserul.

Scrieți în comentarii dacă aveți probleme... vom rezolva împreună.

Fișierul de configurare suplimentar.htaccess este adesea folosit pentru a restricționa accesul la un site, secțiuni ale unui site sau anumite fișiere aflate pe server.

Pentru a refuza accesul la întregul site, trebuie să scrieți următoarele în fișierul .htacces:



Interziceți accesul numai de la o anumită adresă IP:


nega de la toti
ordinul permite refuzul
nega de la toti
nega de la adresa_ip_utilizator


"adresa_ip_utilizator" trebuie înlocuit cu o anumită adresă IP.

Pentru a permite accesul numai de la o anumită adresă IP, puteți scrie:


ordinul permite refuzul
nega de la toti
permiteți de la adresa_ip_utilizator


De asemenea, puteți refuza accesul la un anumit fișier folosind fișierul .htaccess. De exemplu, vom refuza accesul utilizatorului la fișierul .htaccess în sine. În acest caz, serverul va putea folosi instrucțiunile specificate în fișier:


< Fișiere .htaccess >
comanda permite, refuza
nega de la toti

Protecția fișierelor

Probabil toți utilizatorii de internet au dat peste aceleași articole pe diverse site-uri. Se întâmplă adesea ca aceste articole să fie pur și simplu furate din alte resurse. Motoarele de căutare încearcă să facă față paginilor duplicate, dar alegerea lor a sursei originale nu este întotdeauna corectă. Și aceasta este o problemă serioasă pentru copywriteri și webmasteri, încă de când scriu continut de calitate, uneori, dispare număr mare efort și timp și este foarte neplăcut să primești penalități de la motoarele de căutare pentru că cineva a copiat conținut de pe site-ul tău. Și adesea, împreună cu textul, sunt furate și imaginile. Mai mult, mulți hoți, pentru a nu-și supraîncărca serverul, nu descarcă imagini de pe alte site-uri, ci pur și simplu leagă la fișierele aflate pe site-ul sursă. Inserarea unui link către un fișier aflat pe alt site se numește hotlink. Pe lângă linkurile către imagini, pot exista și linkuri către alte fișiere, de exemplu, disponibile pentru descărcare. Astfel de hotlink-uri nu sunt doar extrem de neplăcute pentru autorul conținutului. De asemenea, supraîncărcă serverul sursă.

Puteți proteja fișierele de o legătură rapidă folosind fișierul .htaccess adăugând două linii la acesta:



your_site.ru.*$


În paranteze separate prin simbolul „|” sunt indicate extensiile de fișiere, accesul la care va fi interzis tuturor, cu excepția utilizatorilor serverului și site-ului your_site.ru

Pentru a pune la dispoziția utilizatorilor fișierele cu această extensie motoarele de căutare este necesar să excludeți interdicția asupra lor în același mod ca pe site-ul dvs.:


RewriteCond %(HTTP_REFERER) !^$
RewriteCond %(HTTP_REFERER) !^http(s)?://(www.)? your_site.ru
RewriteCond %(HTTP_REFERER) !^http(s)?://(www.)?yandex.ru
RewriteCond %(HTTP_REFERER) !^http(s)?://(www.)?yahoo.
RewriteCond %(HTTP_REFERER) !^http(s)?://(www.)?google.
RewriteCond %(HTTP_REFERER) !^http(s)?://(www.)?bing.
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ -

Protecție prin parolă

Folosind fișierul de configurare suplimentar.htacces este posibil să setați o parolă pentru directorul site-ului, fisier specific sau un grup de fișiere cu aceeași extensie. Pentru a seta o parolă pentru un director, în .htaccess trebuie să scrieți:


AuthName" ce vrei?"
AuthType Basic
AuthUserFile
necesită utilizator valid


Fișierul .htaccess care conține aceste linii trebuie plasat în directorul la care dorim să blocăm accesul. Când un utilizator încearcă să intre în secțiunea corespunzătoare a site-ului, serverul va da un cod de stare 401 (autorizare necesară) și va afișa o fereastră cu câmpuri pentru introducerea unui nume de utilizator și a parolei și mesajul „Ce doriți specificat în?” directiva „AuthName” (numai caractere și numere latine).

Numele de utilizator și parolele sunt stocate în fișierul .htpasswd. Calea către acest fișier este specificată în directiva „AuthUserFile”.

Important: Calea către fișierul.htpasswd este specificată ca absolută, de la directorul rădăcină server.

Pentru a afla calea către .htpasswd, care trebuie specificată în .htaccess, puteți crea fișier php care contine:


< ?php echo $_SERVER["DOCUMENT_ROOT"]; ? >


Încărcați acest fișier pe server în același loc în care se află .htpasswd și deschideți-l în browser. În pagina generată veți vedea calea absolută către directorul specificat din directorul rădăcină al serverului.

Puteți seta o parolă pentru un anumit fișier, după cum urmează:


< Fișiere file.txt >
AuthName „Este”. nu pentru toate"
AuthType Basic
AuthUserFile /home/server/your_site.ru/pass/.htpasswd


Parola pentru un grup de fișiere:


< Fișierele „\.(sql)$” >
AuthName „Nu este pentru toți”
AuthType Basic
AuthUserFile /home/server/your_site.ru/pass/.htpasswd


ÎN în acest caz, toate fișierele cu extensia .sql vor fi accesibile numai cu o parolă.



Există adesea o situație în care este necesar să protejați un folder de pe un site web cu o parolă și sau să puneți o parolă pe întregul site. Pe web server Apache acest lucru este posibil folosind fișierele .htaccess și .htpasswd.

1.Mai întâi, trebuie să creați un fișier .htpasswd

a) pe baza realității noastre, nu fiecare utilizator de găzduire are acces la server prin ssh. Deci, dacă sunteți un fericit proprietar al sistemului de operare Windows acasă, puteți utiliza utilitarul htpasswd.exe pentru a crea un fișier .htpasswd pe computerul de acasă.

Faceți clic pe „Start -> Run”, introduceți cmd în linia de introducere și faceți clic pe OK. Se va deschide o fereastră de utilitar CMD. Accesați directorul cu fișierul htpasswd.exe. Acum trebuie să dați o comandă pentru a crea un fișier cu o parolă. Introduceți următoarele în linia de comandă:

htpasswd -cm .htpasswd admin

Cm sunt cheile pentru utilitate.

Tasta c - indică faptul că este necesar să se creeze un fișier nou cu parole. Dacă un fișier cu același nume există deja, acesta va fi suprascris.

Cheia m - determină criptarea utilizând algoritmul MD5.

Htpasswd - numele fișierului cu parole (puteți folosi orice nume).

admin - numele vizitatorului (login) căruia i se va permite accesul în zona restricționată a site-ului.

Ca răspuns, ar trebui să vi se ceară să introduceți o parolă și apoi să o repetați.

Dacă totul este corect, la sfârșit va apărea următorul mesaj: Adăugarea parolei pentru administratorul utilizatorului.

Iar în directorul de lângă htpasswd.exe va apărea un fișier.htpasswd, care va conține o linie cu numele de utilizator și codul hash al parolei sale.

admin:$apr1$yQ3.....$O0qnYRoFRdZQUhs/jDaQP0

Pentru a adăuga un alt utilizator la același fișier .htpasswd, eliminați comutatorul -c din comanda de lansare a utilitarului htpasswd.exe

htpasswd -m .htpasswd admin

Acum fișierul .htpasswd poate fi copiat în găzduire într-un director separat, de exemplu /var/www/html/my-site/admin/

b) dacă aveți acces prin ssh sau aveți Linux instalat acasă, atunci fișierul .htpasswd este generat folosind utilitarul htpasswd din kitul Apache. Pentru a face acest lucru trebuie să scrieți la linie de comandă urmatoarele:

htpasswd -bc .htpasswd nume utilizator parola utilizator

Acum, fișierul .htpasswd poate fi copiat (transferat) într-un director separat de pe găzduire, de exemplu în /var/www/html/my-site/admin/

2. În directorul site-ului pe care doriți să îl protejați cu o parolă, trebuie să creați un fișier .htaccess în care scriem următoarele rânduri:

a) dacă trebuie să puneți o parolă pe întregul director

AuthType Basic
AuthName „Zonă privată. Numai pentru administrator!”
necesită utilizator valid

b) dacă trebuie să puneți o parolă pe fișier


AuthName „admin-zone”
AuthType Basic
AuthUserFile /var/www/html/my-site/admin/.htpasswd
necesită utilizator valid

AuthUserFile este calea completă către fișierul .htpasswd din directorul rădăcină al sistemului de operare Linux. În cazul unei săli de operație sistem Windows astfel: c:/my_site/.htpasswd.

AuthName - „text_liber” de exemplu „Panou de control”. Acest text va fi afișat în fereastra pentru introducerea numelui de utilizator și a parolei.

Treaba este gata, atunci când încercați să accesați un site sau un director securizat, va apărea o fereastră care vă va cere să introduceți numele de utilizator și parola pentru a intra pe site.