Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czy takie uwierzytelnianie będzie bezpieczne?
MGreg
post 27.01.2008, 20:42:26
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 18.09.2007

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
1010
post 27.01.2008, 20:48:47
Post #2





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Go to the top of the page
+Quote Post
MGreg
post 27.01.2008, 20:51:03
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 18.09.2007

Ostrzeżenie: (0%)
-----


Przeanalizuj dokładnie to będziesz wiedzieć...
Go to the top of the page
+Quote Post
1010
post 27.01.2008, 20:53:52
Post #4





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

Ostrzeżenie: (0%)
-----


a rzeczywiście... Wybacz... To chyba godzina... Ostatnio nie śpię zbyt dużo...

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


--------------------
Go to the top of the page
+Quote Post
MGreg
post 27.01.2008, 20:56:06
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 18.09.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował MGreg 27.01.2008, 21:26:24
Go to the top of the page
+Quote Post
Jawor
post 27.01.2008, 21:35:09
Post #6





Grupa: Zarejestrowani
Postów: 73
Pomógł: 2
Dołączył: 1.10.2003

Ostrzeżenie: (0%)
-----


Z mojej strony zaproponuje Ci zrobienie logowania wykorzystujac do tego sesje.
Artykulow o tym w internecie masz baaardzo duzo.
Go to the top of the page
+Quote Post
dadexix
post 28.01.2008, 07:03:39
Post #7





Grupa: Zarejestrowani
Postów: 439
Pomógł: 21
Dołączył: 28.06.2007
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


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:)


--------------------
"Na przykład zmiennej $jestem_najlepszy przypisujemy wartość logiczną TRUE"
Ja: użyj funkcji[...]
Grins: mów normalnie do mnie a nie po polsku
Ja: normalnie to znaczy jak?
Grins: No w PHP... inaczej mój parser ledwo kuma:)
Go to the top of the page
+Quote Post
MGreg
post 28.01.2008, 16:43:01
Post #8





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 18.09.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Seth
post 28.01.2008, 21:17:21
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
MGreg
post 28.01.2008, 22:04:34
Post #10





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 18.09.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Seth
post 28.01.2008, 22:21:42
Post #11





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Dzieki smile.gif

No to na sztywno wrzuc do jakiegos pliku php juz gotowa tablice - nie bedziesz musial laczyc sie z baza.
Go to the top of the page
+Quote Post
pafka
post 29.01.2008, 20:37:14
Post #12





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 8.01.2005

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.05.2024 - 17:49