Autentificarea Http în php

HTTP -autentifikatsiya în PHP este posibilă numai atunci când rulează PHP ca un modul Apache și, prin urmare, nu sunt disponibile în CGI-versiune. Funcția de antet script PHP () poate fi utilizat pentru Apache-modulul pentru a trimite un mesaj „Este necesară autentificarea“ la browser-ul clientului, care determină apariția în ea caseta de intrare de utilizator / parola. După ce utilizatorul introduce un nume de utilizator și o parolă, URL-ul care conține un script PHP va fi numit din nou cu variabilele $ PHP_AUTH_USER, $ PHP_AUTH_PW și $ PHP_AUTH_TYPE, care a seta numele de utilizator, parola și autentificare tipul respectiv. În prezent, este acceptată numai autentificarea "Basic". Vezi și funcția header ().







Un exemplu de fragment de script care forțează autentificarea clientului:

Exemplul 17-1. Exemplu de autentificare HTTP

Notă: Vă rugăm să fiți atenți atunci când codificare liniile de antet HTTP. Pentru a maximiza compatibilitatea de garantare cu toți clienții, cuvântul cheie „de bază“ ar trebui să fie scris cu primul „B“, în registrul superior, șirul de control / domeniu trebuie să fie închise în ghilimele duble (nu singur) și exact un spațiu ar trebui să preceadă codul „401“, în line "HTTP / 1.0 401" header'a.

În loc de un simplu O $ si $ PHP_AUTH_USER PHP_AUTH_PW, poate fi necesar să verificați numele de utilizator și parola corectă de către interogarea bazei de date, sau locația utilizatorului în dbm-fișier.

Urmați activitatea Internet Explorer. Ele sunt foarte sensibile la ordinea antetului. Trimiterea antetului WWW-Authenticate la antetul HTTP / 1.0 401 este un fel de truc.







Pentru a preveni scrierea pe cineva un script care dezvăluie parola de la pagina, autentificată printr-un mecanism extern tradițional, variabilele PHP_AUTH nu va fi setat în cazul în care autentificarea externă este activată pentru pagina respectivă. În acest caz, variabila dolari REMOTE_USER poate fi utilizat pentru a identifica utilizator autentificat extern.

Notă de configurare: PHP utilizează directiva AuthType pentru a determina dacă autentificarea externă este validă. Eliminați această directivă pentru contextul în care trebuie să utilizați autentificarea PHP (altfel fiecare încercare de autentificare nu reușește).

Rețineți, totuși, că cele de mai sus nu împiedică răpirea celor care controlează URL-ul autentificate-ONU, parola adresei URL autentificat pe același server.

Atât Netscape Navigator, cât și Internet Explorer vor șterge memoria cache-ului de autentificare locală a browser-ului pentru domeniul domeniului atunci când vor primi un răspuns de server 401. Acest lucru poate "deconecta" utilizatorii, forțându-i să reintroducă numele de utilizator și parola. Unele utilizează acest lucru pentru conectările "time out" sau oferă un buton "log out".

Exemplul 17-2. Autentificare HTTP care forțează un nou nume / parolă

Acest comportament nu este cerut de standardul de autentificare HTTP de bază, deci nu trebuie să depindeți niciodată de acest lucru. Testarea pentru Lynx a arătat că Lynx nu curăță performanța de autentificare pentru a răspunde la 401 de server, astfel încât apăsarea înapoi, și apoi transmite din nou, deschideți resursa dacă un parametru de autentificare nu este schimbat. Cu toate acestea, utilizatorul poate apăsa tasta '_' pentru a șterge informațiile de autentificare.

De asemenea, rețineți că acest lucru nu funcționează pe serverul Microsoft IIS și cu versiunea CGI a PHP din cauza restricțiilor IIS.

Notă: dacă este activ modul sigur, scriptul uid este adăugat în partea reală a antetului WWW-Authenticate.







Trimiteți-le prietenilor: