HTTP Inštalácia ochrany na stránku pomocou MySQL a PHP. HTTP Inštalácia zabezpečenia na stránke pomocou MySQL a PHP Deposit auth php

Na odoslanie správy je možné použiť funkciu header(). "Vyžaduje sa overenie" prehliadač, ktorý ho prinúti zobraziť okno na zadanie prihlasovacieho mena a hesla. Keď používateľ vyplní prihlasovacie meno a heslo, znova sa zavolá odkaz obsahujúci PHP skript s preddefinovanými premennými PHP_AUTH_USER , PHP_AUTH_PW a AUTH_TYPE nastavenými na prihlasovacie meno, heslo a typ autentifikácie. Tieto preddefinované premenné sú uložené v poliach $_SERVER a $HTTP_SERVER_VARS. Podporované sú oba typy: „Basic“ a „Digest“ (od PHP 5.1.0). Ďalšie podrobnosti nájdete vo funkcii header().

Príklad fragmentu skriptu, ktorý núti klienta prihlásiť sa na zobrazenie stránky:

Príklad č. 1 Základný príklad overenia HTTP

Príklad č. 2 Príklad overenia HTTP Digest

Toto je príklad implementácie jednoduchého autentifikačného skriptu Digest HTTP. Podrobnosti nájdete v » RFC 2617.

Poznámka: Poznámka o kompatibilite

Buďte obzvlášť opatrní pri zadávaní hlavičiek HTTP. Pre zaistenie maximálnej kompatibility s najväčší počet rôznych klientov, slovo "Basic" musí byť napísané s veľkým "B", región (realm) musí byť uzavretý v dvojitých (nie jednoduchých!) úvodzovkách a pred kódom musí byť presne jedna medzera 401 v názve HTTP/1.0 401. Parametre autentifikácie musia byť oddelené čiarkami, ako je znázornené v príklade autentifikácie Digest vyššie.

Namiesto jednoduchého zobrazenia premenných PHP_AUTH_USER a PHP_AUTH_PW na obrazovke možno budete musieť skontrolovať, či sú správne. Ak to chcete urobiť, použite databázový dotaz alebo vyhľadajte používateľa v súbore dbm.

Môžete sledovať funkcie prehliadača internet Explorer. Na parametre prenášaných hlavičiek je to veľmi náročné. Titulkový trik WWW-Autentifikácia pred odoslaním stavu HTTP/1.0 401 pracuje pre neho doteraz.

Počnúc PHP 4.3.0, aby sa zabránilo niekomu napísať skript, ktorý odhalí heslo pre stránku, ktorá používa externú autentifikáciu, premenné PHP_AUTH nie sú nastavené, ak stránka používa externú autentifikáciu a je nastavená na bezpečný režim. Premennú REMOTE_USER však možno použiť na autentifikáciu externe overeného používateľa. Takže vždy môžete použiť premennú $_SERVER["REMOTE_USER"].

Poznámka: Poznámka ku konfigurácii

PHP používa indikáciu direktívy AuthType na označenie, či sa používa externá autentifikácia alebo nie.

Treba poznamenať, že všetky vyššie uvedené nebránia krádeži hesiel na stránky, ktoré vyžadujú autorizáciu niekým, kto kontroluje stránky bez autorizácie umiestnené na rovnakom serveri.

Netscape Navigator aj Internet Explorer po prijatí zo servera vymažú vyrovnávaciu pamäť autentifikácie aktuálneho okna pre danú oblasť. Toto možno použiť na prinútenie používateľa odhlásiť sa a znova zobraziť dialógové okno používateľského mena a hesla. Niektorí vývojári to používajú na časové obmedzenie prihlásenia alebo poskytnutie tlačidla na odhlásenie.

Príklad #8 Príklad HTTP autentifikácie s vynúteným zadaním nového páru login/heslo

Toto správanie nie je regulované normami HTTP Basic- autentifikácia, preto by ste sa na ňu nemali spoliehať. Testovanie prehliadača Lynx to ukázal Lynx nevymaže autorizačnú vyrovnávaciu pamäť pri prijatí stavu 401 zo servera a postupným kliknutím na „Späť“ a potom „Vpred“ je možné takúto stránku otvoriť za predpokladu, že sa nezmenili požadované atribúty autorizácie. Používateľ však môže stlačiť kláves "_" na vymazanie vyrovnávacej pamäte autentifikácie.

Treba tiež poznamenať, že pred PHP 4.3.3 autentifikácia HTTP nefungovala na serveroch so systémom Microsoft IIS, ak bol PHP nainštalovaný ako modul CGI, kvôli určitým obmedzeniam IIS. Aby ste dosiahli správne fungovanie v PHP 4.3.3+, musíte upraviť nastavenie konfigurácie IIS s názvom " Zabezpečenie adresára". Kliknite na nápis " Upraviť"a nastavte možnosť" Anonymný prístup“, všetky ostatné polia by mali zostať nezačiarknuté.

Ďalšie obmedzenie, ak používate IIS cez ISAPI a PHP 4: premenné PHP_AUTH_* nie sú definované, ale zároveň je premenná dostupná HTTP_AUTHORIZATION. Príklad kódu, ktorý môžete použiť: zoznam($user, $pw) = explode(":", base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)));

Poznámka: Poznámka týkajúca sa IIS:
Aby autentifikácia HTTP v IIS fungovala správne, v konfigurácii PHP musí byť možnosť cgi.rfc2616_headers nastavená na 0 (predvolená hodnota).

Poznámka:

V prípade, že sa použije bezpečný režim, doplní sa UID aktuálneho skriptu ríša- hlavová časť WWW-Autentifikácia.

Dobrý deň, priatelia! Pozrime sa na registráciu používateľov v PHP. Najprv si definujme podmienky registrácie našich používateľov:

  • Heslo je zašifrované pomocou algoritmu MD5
  • Heslo osolíme
  • Kontrola, či sú vaše prihlasovacie údaje zaneprázdnené
  • Aktivácia používateľa listom.
  • Zaznamenávanie a ukladanie dát v MySQL DBMS

Aby sme mohli napísať tento skript, musíme pochopiť, čo je registrácia používateľa. Registráciou používateľa sa rozumie získavanie skutočných údajov používateľa, ich spracovanie a uchovávanie.

Ak vysvetlíš jednoduchými slovami potom registrácia je už len zaznamenávanie a ukladanie určitých údajov, ktorými môžeme v našom prípade autorizovať užívateľa - to je Login a Password.

Oprávnenie je udelenie práv určitej osobe alebo skupine osôb na vykonávanie určitých úkonov, ako aj proces overovania týchto práv pri pokuse o vykonanie týchto úkonov. Jednoducho povedané, pomocou autorizácie môžeme obmedziť prístup k určitému obsahu našej webovej stránky.

Pozrime sa na štruktúru adresárov skriptov pre implementáciu našej registrácie s autorizáciou. Potrebujeme rozdeliť skripty na logické komponenty. Moduly registrácie a autorizácie sme umiestnili do samostatného adresára. Do samostatných adresárov umiestnime aj pripojenie k databáze údaje MySQL, súbor s používateľskými funkciami, súbor CSS štýly a náš HTML šablóna. Táto štruktúra umožňuje rýchlu navigáciu v skriptoch. Predstavte si, že máte veľkú webovú stránku s kopou modulov atď. a ak nie je poriadok, v takom neporiadku sa bude len veľmi ťažko niečo hľadať.

Keďže všetky údaje budeme ukladať do MySQL DBMS, vytvorme si malú tabuľku, do ktorej budeme ukladať registračné údaje.

Najprv musíte vytvoriť tabuľku v databáze. Nazvime tabuľku bez_reg, kde bez je predpona tabuľky a reg je názov tabuľky.

Štruktúra tabuľky: bez_reg -- -- Štruktúra tabuľky `bez_reg` -- VYTVORIŤ TABUĽKU, AK NEEXISTUJE `bez_reg` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(200) NOT NULL, `pass` varchar( 32) NOT NULL, `salt` varchar(32) NOT NULL, `active_hex` varchar(32) NOT NULL, `status` int(1) NOT NULL, PRIMAR KEY (`id`)) ENGINE=MYISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Teraz vytvoríme hlavné skripty pre ďalšiu prácu. Súbor INDEX.PHP

súbor CONFIG.PHP

less/reg/?mode=auth">Prihláste sa