HTTP Instaliranje zaštite na stranicu koristeći MySQL i PHP. HTTP Instaliranje sigurnosti na stranicu koristeći MySQL i PHP Deposit auth php

Moguće je koristiti funkciju header() za slanje poruke "Potrebna provjera" preglednik, prisiljavajući ga da prikaže prozor za unos vaše prijave i lozinke. Nakon što korisnik ispuni korisničko ime i lozinku, poveznica koja sadrži PHP skriptu bit će ponovno pozvana s unaprijed definiranim varijablama PHP_AUTH_USER, PHP_AUTH_PW i AUTH_TYPE postavljenim na prijavu, lozinku i vrstu provjere autentičnosti. Ove unaprijed definirane varijable pohranjene su u nizovima $_SERVER i $HTTP_SERVER_VARS. Podržane su obje vrste: "Basic" i "Digest" (od PHP 5.1.0). Pogledajte funkciju header() za više detalja.

Primjer fragmenta skripte koji prisiljava klijenta da se prijavi za pregled stranice:

Primjer #1 Osnovni primjer HTTP provjere autentičnosti

Primjer #2 Sažetak HTTP provjere autentičnosti

Ovo je primjer implementacije jednostavne Digest HTTP skripte za provjeru autentičnosti. Za detalje pogledajte » RFC 2617.

Napomena: Napomena o kompatibilnosti

Budite posebno oprezni kada navodite HTTP zaglavlja. Kako bi se osigurala maksimalna kompatibilnost sa najveći broj različiti klijenti, riječ "Basic" mora biti napisana velikim slovom "B", regija (realm) mora biti u dvostrukim (ne jednostrukim!) navodnicima, a ispred koda mora stajati točno jedan razmak 401 u naslovu HTTP/1.0 401. Parametri provjere autentičnosti moraju biti odvojeni zarezima, kao što je prikazano u gornjem primjeru provjere autentičnosti sažetka.

Umjesto jednostavnog prikazivanja varijabli PHP_AUTH_USER i PHP_AUTH_PW na ekranu, možda ćete morati provjeriti jesu li ispravne. Da biste to učinili, upotrijebite upit baze podataka ili potražite korisnika u dbm datoteci.

Možete promatrati značajke preglednika Internet Explorer. Vrlo je izbirljiv u pogledu parametara odaslanih zaglavlja. Trik s naslovom WWW-Autentifikacija prije slanja statusa HTTP/1.0 401 radi za njega do sada.

Od PHP 4.3.0, kako bi se spriječilo da netko napiše skriptu koja otkriva lozinku za stranicu koja koristi vanjsku provjeru autentičnosti, varijable PHP_AUTH nisu postavljene ako stranica koristi vanjsku provjeru autentičnosti i ako je postavljena na siguran način rada. Međutim, varijabla REMOTE_USER može se koristiti za provjeru autentičnosti eksterno ovjerenog korisnika. Dakle, uvijek možete koristiti varijablu $_SERVER["REMOTE_USER"].

Napomena: Napomena o konfiguraciji

PHP koristi indikaciju direktive AuthType za označavanje koristi li se vanjska provjera autentičnosti ili ne.

Treba napomenuti da sve navedeno ne sprječava krađu lozinki stranicama koje zahtijevaju autorizaciju od strane nekoga tko neovlašteno kontrolira stranice koje se nalaze na istom serveru.

I Netscape Navigator i Internet Explorer brišu autentifikacijsku predmemoriju trenutnog prozora za određeno područje kada su primljeni od poslužitelja. Ovo se može koristiti za prisiljavanje korisnika da se odjavi i ponovno prikaže dijaloški okvir korisničkog imena i lozinke. Neki programeri koriste ovo za vremensko ograničenje prijava ili davanje gumba za odjavu.

Primjer #8 Primjer HTTP autentifikacije s prisilnim unosom novog para prijava/lozinka

Ovo ponašanje nije regulirano standardima HTTP Basic-autentifikacija, stoga ne biste trebali ovisiti o njoj. Testiranje preglednika Ris pokazao da Ris ne briše autorizacijsku predmemoriju kada primi status 401 od poslužitelja, a klikom uzastopno na “Natrag” pa na “Naprijed” moguće je otvoriti takvu stranicu, pod uvjetom da se traženi atributi autorizacije nisu promijenili. Međutim, korisnik može pritisnuti tipku "_" za brisanje predmemorije provjere autentičnosti.

Također treba napomenuti da prije PHP-a 4.3.3, HTTP provjera autentičnosti nije radila na poslužiteljima koji pokreću Microsoft IIS ako je PHP bio instaliran kao CGI modul, zbog nekih IIS ograničenja. Kako biste postigli ispravan rad u PHP-u 4.3.3+, morate urediti postavka konfiguracije IIS pod nazivom " Sigurnost imenika". Kliknite na natpis " Uredi" i postavite opciju " Anonimni pristup", sva ostala polja trebaju ostati neoznačena.

Još jedno ograničenje ako koristite IIS putem ISAPI i PHP 4: varijable PHP_AUTH_* nisu definirani, ali je u isto vrijeme varijabla dostupna HTTP_AUTHORIZATION. Primjer koda koji možete koristiti: popis($user, $pw) = explode(":", base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)));

Napomena: Napomena u vezi s IIS-om:
Kako bi HTTP provjera autentičnosti radila ispravno u IIS-u, u PHP konfiguraciji opcija cgi.rfc2616_headers mora biti postavljena na 0 (zadana vrijednost).

Bilješka:

U slučaju da se koristi sigurni način rada, UID trenutne skripte bit će dodan carstvo- dio zaglavlja WWW-Autentifikacija.

Dobar dan prijatelji! Pogledajmo registraciju korisnika u PHP-u. Najprije definirajmo uvjete za našu registraciju korisnika:

  • Lozinka je šifrirana pomoću MD5 algoritma
  • Zasolit ćemo lozinku
  • Provjeravam je li vaša prijava zauzeta
  • Aktivacija korisnika pismom.
  • Snimanje i pohranjivanje podataka u MySQL DBMS

Da bismo napisali ovu skriptu, moramo razumjeti što je registracija korisnika. Registracija korisnika podrazumijeva dobivanje stvarnih korisničkih podataka, obradu i pohranu podataka.

Ako objasnite jednostavnim riječima onda je registracija samo bilježenje i pohranjivanje određenih podataka pomoću kojih možemo autorizirati korisnika u našem slučaju - to su Login i Password.

Ovlaštenje je davanje prava određenoj osobi ili skupini osoba za obavljanje određenih radnji, kao i postupak provjere tih prava pri pokušaju izvršenja tih radnji. Jednostavno, uz pomoć autorizacije možemo ograničiti pristup određenim sadržajima na našoj web stranici.

Pogledajmo strukturu direktorija skripti za implementaciju naše registracije s autorizacijom. Moramo rastaviti skripte na logičke komponente. Module za registraciju i autorizaciju smjestili smo u zaseban direktorij. Također ćemo smjestiti vezu s bazom podataka u zasebne direktorije MySQL podaci, datoteka s korisničkim funkcijama, datoteka CSS stilovi i naše HTML predložak. Ova struktura omogućuje brzu navigaciju kroz skripte. Zamislite da imate veliku web stranicu s hrpom modula itd. a ako nema reda, bit će vrlo teško pronaći nešto u ovakvom neredu.

Budući da ćemo sve podatke pohraniti u MySQL DBMS, napravimo malu tablicu u koju ćemo pohraniti registracijske podatke.

Prvo morate napraviti tablicu u bazi podataka. Nazovimo tablicu bez_reg gdje je bez prefiks tablice, a reg naziv tablice.

Struktura tablice: bez_reg -- -- Struktura tablice `bez_reg` -- KREIRAJ TABLICU AKO NE POSTOJI `bez_reg` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(200) NIJE NULL, `pass` varchar( 32) NOT NULL, `salt` varchar(32) NOT NULL, `active_hex` varchar(32) NOT NULL, `status` int(1) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INKREMENT=1 ; Kreirajmo sada glavne skripte za daljnji rad. Datoteka INDEX.PHP

CONFIG.PHP datoteku

less/reg/?mode=auth">Prijava