Tutorial PHP: Fisierul .htaccess


Fisierul .htaccess este foarte folosit atunci cand vine vorba de securitate. Din acest fisier putem bloca accesul la anumite fisiere, foldere, redirect spre o alta pagina, protejare pagini cu parola etc.
“.htaccess” nu este o extensie ci este chiar numele fisierului. Pentru a-l crea deschideti notepad si salvati fisierul cu numele “.htaccess” iar la “Save as type” alegeti optiunea “All Files”.

Comenzile scrise in acest fisier actioneaza asupra directorului in care este inclus, asupra fisierelor din acesta si asupra sub-directoarelor. Daca insa intr-un subdirector mai adaugam un fisier .htaccess, atunci acest fisier va actiona si asupra sub-directorului.

In functie de ce doriti sa scrieti in fisier, acesta poate avea o marime destul de mare, iar pentru a nu va rataci in comenzi puteti folosi caracterul diez (#) pentru a adauga comentarii. Caracterul trebuie adaugat inaintea fiecarei linii din comentariu.

Blocarea afisarii listei de fisiere dintr-un director

Presupunem ca avem directorul “users” cu diferite fisiere in el, insa nu contine fisierul index.php. In momentul cand accesam “nume-site.ro/users/” va aparea o lista ce contine toate fisierele din acest folder indiferent de extensia lor.
Pentru a preveni afisarea acestei liste, adaugam in fisierul .htaccess urmatoarea linie:

Options -Indexes

In momentul cand accesam folderul respectiv va aparea avertismentul “You don’t have permission to access /users/ on this server.”.

Permiterea / interzicerea accesului anumitor adrese IP

Din fisierul .htaccess putem permite sau interzice anumitor persoane cu un anumit IP sa acceseze intregul site sau anumite directoare ale acestuia.
Pentru a permite accesul unui anumit IP folosim:

allow from xxx.xxx.xxx.xxx

Unde “xxx.xxx.xxx.xxx” este IP-ul persoanei respective.
Pentru a bloca accesul folosim linia:

deny from xxx.xxx.xxx.xxx

Daca dorim blocarea accesului tuturor persoanelor folosim comanda:

deny from all

Interzicerea accesarii unui fisier

Dupa cum stiti, din browser se poate accesa orice fisier de pe site-ul respectiv. Pentru a interzice acest lucru adaugam urmatoarele randuri in fisierul .htaccess:

<files fisier.txt>
order allow,deny
deny from all
</files>

Pentru o siguranta in plus putem adauga chiar fisierul .htaccess insa acesta este protejat automat si fara sa specificam acest lucru.

Fisiere index alternative

In momentul cand accesam o adresa de genul “nume-site.ro/users/” vom fi directionati catre fisierul cu numele index din acel folder. Putem specifica din .htaccess ca fisierul “index” sa fie altul utlizand expresia:

DirectoryIndex index.php fisier.html contact.php

In acest caz vom fi directionati catre fisierul “index.php”, daca acesta nu este gasit vom fi directionati catre fisierul “fisier.html”, daca nici acesta nu exista vom fi directionati catre “contact.php” si tot asa.

Pagini de erori personalizate

In momentul cand este detectata o eroare putem redirecta utilziatorul catre o anumita pagina personalizata in functie de eroarea returnata. Spre exemplu, daca este accesata o pagina insa aceasta nu exista, va fi returnata eroarea 404 (Not Found). Putem redirecta utilizatorul catre o pagina in care sa scrie “Pagina accesata nu exista”. Pentru acest lucru folosim comanda:

ErrorDocument numar_eroare  /cale_fisier/fisier_eroare.php

Erorile cele mai intalnite sunt:

Nr Eroare Descriere
400 Bad Request
401 Authorization Required
403 Forbidden
404 Not Found
500 Internal Server Error
502 Bad Gateway

Se poate adauga o pagina de eroare corespunzatoare fiecarei erori.

Protejarea unui director cu parola

Pentru a proteja un folder cu un nume si o parola vom folosi pe langa fisierul .htaccess fisierul .htpasswd care va contine numele si parola sub forma criptata. Pentru a proteja folderul adaugam in .htaccess urmatoarele linii:

AuthUserFile calea_catre_fisierul_cu_parole/.htpasswd
AuthName "Mesaj ce apare la logare"
AuthType Basic
require user user_name

Daca sunt mai multi utilizatori ce pot avea acces la folder folosim “require valid-user ” in loc de “require user user_name”.
Pentru serverul Apache instalat pe Windows crearea fisierului .htpasswd se face in modul urmator:

1. Pornim Comand prompt din Start -> Run -> cmd -> Enter.
2. Schimbam locatia cu comanda cd in folderul unde sa afla fisierul htpasswd:
cd C:wampApache2bin si apasam enter
3. Se tasteaza: htpasswd -c .htpasswd user_name
4. Se introduce parola
5. Se repeta parola.

In acest moment s-a creat fisierul .htpasswd in acelasi director cu fisierul executabil htpasswd.
Puteti muta oriunde doriti acest fisier isna sa specificati in .htaccess calea corecta catre acesta.
Din acest moment, cand vom accesa folderul sau orice fisier din folderul respectiv va aparea un formular de login in care introducem userul si parola. Logarea se face o singura data pentru un calculator pana la restartarea acestuia.
Pentru a adauga mai multi utilizatori folosim acelasi procedeu insa fara sa specificam parametrul -c in comanda.

Articol preluat de pe tutorialeweb.net. Articolul original il puteti gasi aici.



Leave a Reply

Your email address will not be published. Required fields are marked *