Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy takie uwierzytelnianie będzie bezpieczne?
Forum PHP.pl > Forum > PHP
MGreg
Witam. Tworzę właśnie prosty cms z panelem administracyjnym. Znalazłem w internecie pewnie sposób uwierzytelniania i przerobiłem go na własną potrzebę. Czy takie coś będzie bezpieczne?
  1. <?
  2. include('../baza.php');
  3. pol_mysql();
  4. $pobierz_admina = mysql_query("select login,haslo from admin"); #pobiera login i hasło admina, hasło jest zaszyfrowane w md5
  5. while ($wcz_admin = mysql_fetch_row($pobierz_admina))
  6. {
  7. $login=$wcz_admin[0];
  8. $haslo=$wcz_admin[1];
  9. $tablica[$login] = $haslo;
  10. }
  11.  
  12. If ($tablica[$_SERVER['PHP_AUTH_USER']] != md5($_SERVER['PHP_AUTH_PW']) || !isset($_SERVER['PHP_AUTH_USER']))
  13. {
  14. header("WWW-Authenticate: Basic realm=Logowanie do systemu");
  15. header("HTTP/1.0 401 Unauthorized");
  16. echo 'błąd logowania';
  17. exit();
  18. }
  19.  
  20. ?>

Plik ten includuję we wszystkich plikach panelu administracyjnego. Czy taka metoda uwierzytelniania będzie bezpieczna?
1010
a co to przepraszam bardzo:
  1. <? 
  2. If ($tablica[$_SERVER['PHP_AUTH_USER']] != md5($_SERVER['PHP_AUTH_PW']) || !isset($_SERVER['PHP_AUTH_USER']))
  3. ?>

ma związanego z tym:
  1. <?
  2. $pobierz_admina = mysql_query("select login,haslo from admin"); #pobiera login i hasło admina, hasło jest zaszyfrowane w md5
  3. while ($wcz_admin = mysql_fetch_row($pobierz_admina))
  4. {
  5. $login=$wcz_admin[0];
  6. $haslo=$wcz_admin[1];
  7. $tablica[$login] = $haslo;
  8. }
  9. ?>
MGreg
Przeanalizuj dokładnie to będziesz wiedzieć...
1010
a rzeczywiście... Wybacz... To chyba godzina... Ostatnio nie śpię zbyt dużo...

Mam pytanie... Jak wrzucasz dane z logowania do $_SERVER?
MGreg
Cytat(1010 @ 27.01.2008, 20:53:52 ) *
a rzeczywiście... Wybacz... To chyba godzina... Ostatnio nie śpię zbyt dużo...

Mam pytanie... Jak wrzucasz dane z logowania do $_SERVER?


Pytaj mnie a ja Ciebie winksmiley.jpg Sam nie wiem jak to się odbywa bo orłem z php nie jestem, ale wiem, że to działa. Chcę się tylko dowiedzieć czy w tym uwierzytelnianiu nie ma jakiejś luki. Wiem tylko, że przy próbie dostępu do danego pliku wyskakuje okienko w którym podaje się login i hasło.
Jawor
Z mojej strony zaproponuje Ci zrobienie logowania wykorzystujac do tego sesje.
Artykulow o tym w internecie masz baaardzo duzo.
dadexix
Cytat
Z mojej strony zaproponuje Ci zrobienie logowania wykorzystujac do tego sesje.
Artykulow o tym w internecie masz baaardzo duzo.
tym bardziej ze jest bardzo duzo przykladkow bardzo dobrze sprawdzonych i i dobrze prosperujacych w wielu servisach:)
MGreg
Pragnę zaznaczyć, że pytałem o bezpieczeństwo uwierzytelniania, którego kod podałem. To, że popularne jest uwierzytelnianie przez sesje jest dla mnie wiadome, lecz mi zależy na prostej, bezpiecznej metodzie uwierzytelniania dla Panelu Administracyjnego. Tak więc oczekuję, by ktoś przeanalizował mój kod i dał jasną odpowiedź - bezpieczne albo nie. Jeśli nie to dopiero zajmę się waszym sposobem.
Seth
Jest bezpieczne ale:

1) przed polaczeniem sie do bazy i pobranie danych sprawdzil bym czy w ogole jest po co je pobierac - isset($_SERVER['PHP_AUTH_USER']).

2) Sadze tez ze nie potrzeba pobierac wszystkch uzytkownikow po to aby sprawdzic czy istnieje jeden z poprawnym haslem - wyczyscil bym zmienna z loginem uzytkownika od danych ktore moga nabrudzic w zapytaniu SQL i zmdpiątkował ( biggrin.gif ) haslo, a potem wrzucil to do zapytania.

3) Do tego brakuje mi blokady ilosci niepoprawnych logowan - po 3ech blednych probach logowania ban dla IP na 30 minut. Zapobiegnie to atakom slownikowym i bruteforce.
MGreg
No i taka odpowiedź mnie satysfakcjonuje winksmiley.jpg punkcik pomógł dla Ciebie. A nie pobierani są wszyscy użytkownicy tylko jeden - administrator smile.gif Może to i dziwne rozwiązanie by robić osobną tabelę na jednego użytkownika - admina ale nic innego mi do głowy nie przychodziło.
Seth
Dzieki smile.gif

No to na sztywno wrzuc do jakiegos pliku php juz gotowa tablice - nie bedziesz musial laczyc sie z baza.
pafka
Cytat(MGreg @ 27.01.2008, 20:42:26 ) *
  1. <?
  2. ...
  3. $login=$wcz_admin[0];
  4. $haslo=$wcz_admin[1];
  5. $tablica[$login] = $haslo;
  6. ...
  7. ?>


mozesz to lekko uproscic jeszcze

  1. <?php
  2. $tablica[$wcz_admin[0]] = $wcz_admin[1];
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.