HTTP Instalace ochrany na stránku pomocí MySQL a PHP. HTTP Instalace zabezpečení na stránku pomocí MySQL a PHP Deposit auth php

K odeslání zprávy je možné použít funkci header(). "Vyžadováno ověření" prohlížeč, který jej přinutí zobrazit okno pro zadání vašeho přihlašovacího jména a hesla. Jakmile uživatel vyplní přihlašovací jméno a heslo, bude znovu zavolán odkaz obsahující PHP skript s předdefinovanými proměnnými PHP_AUTH_USER , PHP_AUTH_PW a AUTH_TYPE nastavenými na login, heslo a typ autentizace. Tyto předdefinované proměnné jsou uloženy v polích $_SERVER a $HTTP_SERVER_VARS. Podporovány jsou oba typy: "Basic" a "Digest" (od PHP 5.1.0). Další podrobnosti najdete ve funkci header().

Příklad fragmentu skriptu, který nutí klienta, aby se přihlásil k zobrazení stránky:

Příklad č. 1 Základní příklad ověřování HTTP

Příklad č. 2 Příklad ověření HTTP Digest

Toto je příklad implementace jednoduchého ověřovacího skriptu HTTP Digest. Podrobnosti viz » RFC 2617.

Poznámka: Poznámka ke kompatibilitě

Buďte obzvláště opatrní při zadávání HTTP hlaviček. Pro zajištění maximální kompatibility s největší počet různé klienty, slovo "Basic" musí být napsáno s velkým "B", oblast (realm) musí být uzavřena do dvojitých (nikoli jednoduchých!) uvozovek a před kódem musí být právě jedna mezera 401 v názvu HTTP/1.0 401. Parametry ověřování musí být odděleny čárkami, jak je znázorněno ve výše uvedeném příkladu ověřování Digest.

Místo prostého zobrazení proměnných PHP_AUTH_USER a PHP_AUTH_PW na obrazovce možná budete muset zkontrolovat, zda jsou správné. Chcete-li to provést, použijte databázový dotaz nebo vyhledejte uživatele v souboru dbm.

Můžete sledovat funkce prohlížeče internet Explorer. Na parametry přenášených hlaviček je velmi vybíravý. Titulní trik WWW-ověření před odesláním stavu HTTP/1.0 401 zatím pro něj pracuje.

Od PHP 4.3.0, aby se zabránilo někomu napsat skript, který odhalí heslo pro stránku, která používá externí ověřování, proměnné PHP_AUTH nejsou nastaveny, pokud stránka používá externí ověřování a je nastavena na zabezpečený režim. Proměnnou REMOTE_USER však lze použít k ověření externě ověřeného uživatele. Vždy tedy můžete použít proměnnou $_SERVER["REMOTE_USER"].

Poznámka: Poznámka ke konfiguraci

PHP používá indikaci direktivy AuthType k označení, zda je použito externí ověřování či nikoli.

Je třeba poznamenat, že vše výše uvedené nezabrání krádeži hesel ke stránkám, které vyžadují autorizaci od někoho, kdo neoprávněně ovládá stránky umístěné na stejném serveru.

Netscape Navigator i Internet Explorer po přijetí ze serveru vymažou mezipaměť ověřování aktuálního okna pro danou sféru. To lze použít k přinucení uživatele k odhlášení a opětovnému zobrazení dialogového okna uživatelského jména a hesla. Někteří vývojáři to používají k časovému omezení přihlášení nebo k poskytnutí tlačítka pro odhlášení.

Příklad #8 Příklad HTTP autentizace s vynuceným zadáním nového páru login/heslo

Toto chování není regulováno normami Základní HTTP-ověření, proto byste na něj neměli záviset. Testování prohlížeče Rys to ukázal Rys nevymaže autorizační mezipaměť při příjmu stavu 401 ze serveru a postupným kliknutím na „Zpět“ a poté „Vpřed“ je možné takovou stránku otevřít za předpokladu, že se nezměnily požadované atributy autorizace. Uživatel však může stisknout klávesu "_" pro vymazání mezipaměti ověřování.

Je třeba také poznamenat, že před PHP 4.3.3 nefungovala autentizace HTTP na serverech s Microsoft IIS, pokud bylo PHP nainstalováno jako modul CGI, kvůli určitým omezením IIS. Abyste dosáhli správného fungování v PHP 4.3.3+, musíte upravit nastavení konfigurace IIS s názvem " Zabezpečení adresáře". Klikněte na nápis " Upravit"a nastavte možnost" Anonymní přístup“, všechna ostatní pole by měla zůstat nezaškrtnutá.

Další omezení, pokud používáte IIS přes ISAPI a PHP 4: proměnné PHP_AUTH_* nejsou definovány, ale zároveň je proměnná dostupná HTTP_AUTHORIZATION. Příklad kódu, který můžete použít: seznam($user, $pw) = explode(":", base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)));

Poznámka: Poznámka k IIS:
Aby autentizace HTTP v IIS fungovala správně, musí být v konfiguraci PHP nastavena volba cgi.rfc2616_headers na 0 (výchozí hodnota).

Poznámka:

V případě použití nouzového režimu bude přidáno UID aktuálního skriptu oblast-hlavová část WWW-ověření.

Hezký den, přátelé! Podívejme se na registraci uživatelů v PHP. Nejprve si definujme podmínky registrace našich uživatelů:

  • Heslo je zašifrováno pomocí algoritmu MD5
  • Heslo osolíme
  • Kontrola, zda nejsou vaše přihlašovací údaje zaneprázdněny
  • Aktivace uživatele dopisem.
  • Záznam a ukládání dat v MySQL DBMS

Abychom mohli napsat tento skript, musíme pochopit, co je registrace uživatele. Registrací uživatele se rozumí získávání skutečných uživatelských dat, zpracování a ukládání dat.

Pokud vysvětlíte jednoduchými slovy registrace je pak jen zaznamenáváním a ukládáním určitých údajů, kterými můžeme v našem případě uživatele autorizovat - to je Login a Heslo.

Oprávnění je udělení práv určité osobě nebo skupině osob k provádění určitých úkonů, jakož i proces ověřování těchto práv při pokusu o provedení těchto úkonů. Jednoduše řečeno, pomocí autorizace můžeme omezit přístup k určitému obsahu na našich webových stránkách.

Podívejme se na strukturu adresářů skriptů pro implementaci naší registrace s oprávněním. Potřebujeme rozdělit skripty na logické komponenty. Registrační a autorizační moduly jsme umístili do samostatného adresáře. Do samostatných adresářů umístíme i připojení k databázi Data MySQL, soubor s uživatelskými funkcemi, soubor CSS styly a naše HTML šablona. Tato struktura umožňuje rychle procházet skripty. Představte si, že máte velký web s hromadou modulů atd. a pokud nebude řád, bude velmi těžké v takovém nepořádku něco najít.

Protože všechna data budeme ukládat do MySQL DBMS, vytvořte si malou tabulku, do které budeme ukládat registrační údaje.

Nejprve je potřeba vytvořit tabulku v databázi. Nazvěme tabulku bez_reg, kde bez je předpona tabulky a reg je název tabulky.

Struktura tabulky: bez_reg -- -- Struktura tabulky `bez_reg` -- VYTVOŘIT TABULKU, POKUD 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 ; Nyní vytvoříme hlavní skripty pro další práci. Soubor INDEX.PHP

Soubor CONFIG.PHP

less/reg/?mode=auth">Přihlaste se