Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Uwierzytelnianie HTTP – zabezpieczenie strony hasłem

W wielu przypadkach przy projektowaniu stron internetowych dostęp do niektórych skryptów (np. panelu administracyjnego) należy ograniczyć. Najprostszą i najpopularniejszą metodą jest wymóg podania login i hasła. Problem ten można rozwiązać na dwa sposoby. Możemy napisać skrypty PHP odpowiedzialne za rejestracje nowych internautów, logowanie ich itd. lub skorzystać z uwierzytelnienia HTTP, co daje nam praktycznie takie same efekty pisząc tylko kilka linijek kodu.

Niestety rozwiązanie to ma jedną bardzo poważną wadę, a mianowicie nie mamy możliwości wylogowywania się.

Na samym początku skryptu PHP (pliku strony WWW), do którego chcemy zablokować dostęp należy umieścić taki kod:

header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Jakaś nazwa"');
exit('Musisz podać hasło');
//pobieramy podane hasło i login
$username = $_SERVER['PHP_AUTH_USER'];
$password = $_SERVER['PHP_AUTH_PW'];
//sprawdzamy czy hasło i login się zgadzają pobierając z bazy danych odpowiednie dane
$query = "SELECT username FROM user WHERE username = '" . $username . "' AND password = "' . $password . "'"; 
$data = mysqli_query($dbc, $query) or die('Błąd w zapytaniu do bazy');
if (mysqli_num_rows($data) == 1) {
//dane się zgadzają
echo 'Jesteś zalogowany jako ' . $username;
//dalszy kod skryptu oraz kod HTML - zostanie on wyświetlony tylko w tedy kiedy internauta się zaloguje
} else {
exit ('Login lub hasło jest niepoprawne');
}

Dal większego bezpieczeństwa zalecamy zaszyfrowanie haseł używając algorytmu MD5 poprzez funkcję PHP –md5('string'); Oczywiście dane takie jak login czy hasło, mogą być zapisane wcześniej w jakiejś zmiennej lub w innym miejscu, a nie w bazie MySQL.

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, ,

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany.

Pin It on Pinterest