pagina Parola

pagina parolă. Partea 1. Mai degrabă teoretică.

Am adăuga două lucruri. În primul rând - în cazul în care acest lucru este de a pune fișierul .htpasswd. Prin experimentare, am constatat că, dacă, de exemplu, calea către documentul cu un mesaj de eroare (ErrorDocument) este scris în raport cu un sistem de DocumentulRădăcină variabilă. Dar calea către fișierul de parole (UserFile) este scris cu privire la ServerRoot. În ceea ce am înțeles, de mai sus a pus ServerRoot .htpasswd imposibil - „../“ nu este perceput. Toate acestea se face în scopul de a fi capabil de a pune fișierul de parole, de exemplu, un nivel mai sus directorul rădăcină al unui site la dosarul rețelei de acces nu a existat.

Al doilea - este că script-ul se poate afla cine se deschide, și parola dvs.: variabilele PHP_AUTH_USER $ și $ PHP_AUTH_PW.

Fiecare pagină din zona închisă se conectează cu un cod ca acest fișier:

Prima linie a șterge toate datele de conectare caractere, cu excepția litere, cifre, cratime și subliniere. Apoi, numărul de linii primite este verificată și numai în cazul în care o singură linie de acces este dat. În alte cazuri, utilizatorul va vedea în fereastra de browser care vă solicită să introduceți numele de utilizator și parola. În cazul în care utilizatorul este conectat cu succes, matrice $ user_row avem toate informațiile cu privire la aceasta.

Desigur, exemplul pe care l-am dat, are unele dezavantaje majore. Nu copiați-l unu-la-unu, astfel încât să nu cădea victimă a ghicirea parolei încercări, deoarece
1. Protecția selecției nu este aici
2. în cazul în tabelul de utilizatori este mare, selectarea parolei atacatorului este de natură să „umple“ de bază

Și ultima pentru metoda de azi - stocarea datelor criptate într-un cookie.

script-ul de intrare verifică numele de utilizator și parola, și dă două cookie-uri. În primul - conectare, în scopul de a identifica utilizatorul imediat (în câmpul de conectare a bazei de date, desigur, unic, sau chiar o cheie). În al doilea cookie - hash a timpului de intrare și parola (pentru caracterul complet al conspirației, am adăuga aceste linii la litera „Y“ - atunci este aproape imposibil de a alege hash :).

Toate celelalte programe din cod, care face următoarele. Se face o cerere la baza de date - selectează o linie de conectare primite. Din această linie are câmpul „log_time“ și parola și le face, așa cum este descris mai sus, hash. O compară cu faptul că a primit, iar în cazul în care se potrivesc, emite un nou hash cookie, din nou, prin parolă, timp, și litera „Y“, și face o cerere către baza de date „SET utilizator UPDATE log_time =«»unde $ autentificare =“ cookie_login '“.

pagina parolă. Partea 2: selecție de blocare

Când am pus această problemă în ultima oară, am zapinali în loc, ei spun acest lucru și puteți bloca serverul „deraieze“.

Dar, mai întâi, de blocare de selecție. Platitudini, dar încă. Lungimea parolei de zece caractere din literele alfabetului și numerele latin - o mulțime de opțiuni. Dacă selectați parola pentru 1.000.000 de opțiuni în al doilea, va dura câteva mii de ani. Dar, din moment ce acest lucru fără sens este dificil să ne amintim, vom face de multe ori parola de cuvinte semnificative. Acum câțiva ani, sa constatat că majoritatea parolelor vă puteți ridica cu ajutorul unui dicționar de 10.000 de cuvinte. La acea vreme, viermele (un virus) a apărut în rețea, care a urcat pe servere unix, folosind gaura lor în apărare și parolele priveligirovanyh cules utilizatori folosind. Unix dicționar ortografie. Nimic nu trebuie să lug în jurul valorii de!

Fiecare utilizator, în timp ce el nu a intrat numele de utilizator și parola corecte este considerată a fi hacker rău intenționat. Cu ce ​​trebuie să facem atunci când utilizatorul introduce ceva greșit?

  • uitare (acest lucru pe site-uri decente au formochka „uitat parola“ pentru a trimite la setările de sistem introduse în această parolă același e-mail)
  • îngăduința de sine ( „pentru că nefig“)
  • ghicitul dicționar parola (probabilitate de selecție de succes este mare, atât de aproape este necesar, mai ales în cazul în care site-ul de natură comercială)
  • DoS-atacuri (astfel încât să nu suprasarcină server, este necesar să se reducă la minimum acțiunile care se vor executa script-ul într-un astfel de caz)

M-am gândit, cum se poate provoca o supraîncărcare pe server, în cazul în care mecanismul de protecție se află pe fișiere. Sa dovedit, este ușor (cât de mult va costa - este o altă întrebare). Deci, de exemplu, serverul nu poate supraviețui în cazul în care script-ul va încerca la 1000 de ori pe secundă pentru a deschide fișierele de pe înregistrarea și scrie datele în ele. Pentru că, după 5 eșuat logare încearcă un utilizator este refuzat accesul imediat (fără nici o înregistrare a datelor în fișier), este necesar să se găsească IP 200 unic, din care cinci ori și să caute. Este posibil. Rezistă bannerokrutilke html-banner cu cinci tag-uri:

Utilizatorul face instantaneu cinci apeluri un server de cinci ori scrie într-un fișier (de altfel, în unele browsere ar putea apărea o fereastră pentru a introduce numele de utilizator și parola). Puteți face o pagina HTML cu cinci astfel de imagini și pagina însăși, introdusă prin iframe pe site-ul vizitat (prin iframe - la referer câmp nu a găsit cu greu khaljavnogo ce gazduieste echipa de suport se va ocupa cu astfel de lucruri ca săpat în fișierele jurnal din referenți de căutare.) . Acele exemple pe care le-am dat, desigur, sunt întinse, dar faptul că puteți beneficia de un astfel de dezavantaj al sistemului este dovedit. Apropo, ceva de genul asta sa întâmplat înainte.

Și aici este codul de program:

// aici vine instalarea datorită serverul de baze de date. să nu atingă nimic, în cazul în care utilizatorul imediat „thrash“.

CREATE TABLE UNAUTH (VARCHAR nume de utilizator (64) NOT NULL, treci VARCHAR (64) NOT NULL, ip VARCHAR (255), logintime TIMESTAMP)

Și în loc să acceseze fișierele noi de lucru cu baza de date.

DELETE FROM UNAUTH UNDE logintime

Un astfel de mecanism este sub o sarcină grea va fi mai rapid și mai fiabile decât fișierele - baza de date utilizate în mod frecvent este tamponată și procesate direct în memoria RAM.

pagina parolă. Partea 3: Parola pentru baza de date

Metoda de conectare, de exemplu, MySQL. Scrieți o funcție, de exemplu, mysql_die:

La începutul programului indică faptul că serverul de bază de date gazdă și, dacă este cazul, numele bazei de date:

Și pentru a se conecta la serverul sunt luate variabile: $ PHP_AUTH_USER și $ PHP_AUTH_PW.

Și totuși. Acum dezavantajele. Desigur, cu o astfel de protecție poate încerca să ridica parola (în principiu, este posibil să se atașeze un sistem de blocare, dar apoi poteryatesya toată frumusețea metodei). Parola, la fel ca în cazul serverului mijloacelor de protecție este trimis în clar. Dar acest lucru este destul de rău pentru sarcini simple.

pagina parolă. Partea 4. pechenyushki

Această metodă se aplică în cazul în care o mulțime, iar trupele lor se schimbă în mod constant, în primul rând, utilizatorii. În al doilea rând, în cazul în care este necesar să se facă intrarea ușoară - astfel încât să vă puteți conecta în sistem prin introducerea numelui de utilizator și parola în formularul de pe pagina.

Desenați o formă și face fișierul care primește o parolă de conectare și (protecția colecțiilor, am descris oud, adăugați-l aici pe tine).

Toate paginile închise cauza fișierul care verifică parola este corectă, obținut de la un cookie:

Nume cookie-uri vor fi utilizate în mai multe locuri, asa ca mai bine să le pună într-un singur loc (de exemplu, să declare o constantă), astfel încât să nu corect de mai multe ori.

După cum puteți vedea, parola va fi rulat prin canalul și să se întindă pe fișier cu cookie-urile într-un necriptat deschis. Este foarte nesigur. În absența proprietarului, puteți merge la calculator, uita-te în dosarul în care browser-ul păstrează cookie-ul, și notați parola pe o bucată de hârtie (și, dacă rețeaua locală toate lucrurile în comun, iar abordarea nu este necesară, și să vă fure parola, puteți discuta cu gazda).

În această „clopotele și fluierele“ sunt peste. protecție fiabilă nu se face. Nimeni nu s-ar urca în fișierul cookie-uri pentru hash și selectați-l. Va fi mai ușor să se plaseze între utilizator și sniffer bazate pe web și utilizarea acestuia pentru a găsi parola. Puteți pune un troian, care va stoca toate că utilizatorul a intrat pe tastatură, dar acest lucru nu este problema noastră. Pentru a vă proteja de a asculta canalul, este necesar să se utilizeze compuși, cum ar fi criptare SSL sau.

pagina parolă. Partea 5. Sesiuni

În cazul în care sesiunea de lucru, necesitatea nu este atât de frecventă. De exemplu, în jocul său „monopolist“ am început imediat să folosească sesiunea deoarece utilizatorul poate juca câteva jocuri și aceeași pagină în aceeași sesiune de lucru poate conține date diferite. Există date mai bune pentru unul dintre jocurile care implică utilizatorul, stocate într-o sesiune și de a face o pagină pentru a naviga între jocuri.

Multe sesiuni despre mecanismul nu va spune - deja descris. În forma sa cea mai simplă (sau mai degrabă în-dafault evaluat), acest mecanism funcționează astfel: sistemul deține sesiune de pe un server care conține un fișier de variabilele sale. sesiune de utilizator la pornire este atribuit un identificator unic (de obicei, printr-un cookie), și atunci când se referă la alte pagini trimite. Când executați mecanismul de sesiune în script-uri al dumneavoastră PHP în cazul în care există un identificator corespunzător care a venit fișier de sesiune - dacă există, script-ul poate citi datele dintr-un fișier, dacă nu - va lansa o nouă sesiune și este creat fișierul. Desigur, numele acestei variabile în php Asigurați-vă că plantele tale.

Acum, despre ce caracteristici folosim.

session_start (). se lansează mecanismul de sesiuni. De la utilizator pentru a fi variabilă și fișierul corespunzător. Dacă fișierul nu există, este creată, iar sesiunea este pornit de la zero. În cazul în care nu există nici un fișier sau variabilă, variabila este generată (de exemplu, a trimis un antet cu kukoy) și creează fișierul.

session_register (nume1, nume2, imya3.). Precizați care variabilele să-și amintească în fișierul de la sfârșitul script-ul. După ce utilizatorul sare la o altă pagină, puteți începe mecanismul de sesiune, și după apelarea acestei funcții, variabilele sunt disponibile.

session_destroy (). Elimină fișierul de date de sesiune (folosind cookie-uri trebuie să le ștergeți manual, expunând cookie-gol: „setcookie (session_name ())“).

Deci, avem trei fișiere - Intrare (conectare), verificați (AUTH) și de ieșire (deconectare).

Acest script este, de asemenea, un procesor și formular pentru introducerea datelor. Când primiți un utilizator și parola, le procesează și dacă acestea sunt corecte, nu mai trimite utilizatorul la pagina corectă. În cazul în care datele sunt incorecte sau lipsesc, desenați forma.

Utilizatorul este verificat în ghidul de matrice $ - este vorba de date, este posibil, de exemplu, să-l salute pe nume:

Cuplu de comentarii: Închis parte parola în acest exemplu - întregul server (de exemplu, service.firm.ru), pentru a închide calea directorului trebuie să fie reparat. In schimb PHPSESSID utilizat session_name (). astfel încât să puteți schimba numele ID-ul este disponibil. Apropo, pe un singur server fizic poate face diferite nume ID de sesiune - suficient pentru a pune în partea dreaptă a fișierului .htaccess cu o session.name linie php_value „ABRACADABRA“.