Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Logowanie, bezpieczeństwo sesji, dobrze czy źle?
xeo
post 15.08.2008, 19:43:30
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 28.10.2005

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


Mam pliki do logowania do panelu ale nie wiem czy wszystko jest poprawnie zrobione, jeżeli coś jest źle to piszcie poprawie.
index.php (logowanie):
  1. <?php
  2.  
  3. if (!isset($_SESSION['kontrola_sesji'])){
  4. $_SESSION['kontrola_sesji'] = true;
  5. $_SESSION['adres_ip'] = $_SERVER['REMOTE_ADDR'];
  6. }
  7. if($_SESSION['adres_ip'] !== $_SERVER['REMOTE_ADDR']){
  8. $info = "Błąd: Próba przejęcia sesji!";
  9. }
  10.  
  11. // użytkownicy
  12. include('users.php');
  13.  
  14. $login = $_POST['login'];
  15. $haslo = $_POST['haslo'];
  16.  
  17. $haslo = sha1($haslo);
  18. foreach($uzytkownicy as $id => $dane) {
  19. if($dane['login'] == $login && $dane['haslo'] == $haslo) {
  20. $_SESSION['uzytkownik'] = $id;
  21. }
  22. }
  23.  
  24. $info = "";
  25.  
  26. if(isset($_SESSION['uzytkownik'])) {
  27. header ('Location: panel.php');
  28. } else {
  29. if(isset($id) && !empty( $_POST['login'] ) && !empty( $_POST['haslo'] )) {
  30. $info = "Podałeś zły login lub hasło!";
  31. }
  32. ?>
  33.  
  34. formularz logowania
  35.  
  36. <?php
  37. }
  38. ?>
users.php (użytkownicy i hasła):
  1. <?php
  2. $uzytkownicy = array(=>
  3.  array('login' => 'user1', 'haslo' => sha1('u1')),
  4.  array('login' => 'user2', 'haslo' => sha1('u2'))
  5. );
  6. ?>
panel.php (strona widoczna po zalogowaniu):
  1. <?php
  2.  
  3. if(isset($_SESSION['uzytkownik'])) {
  4. ?>
  5.  
  6. strona widoczna po zalogowaniu
  7.  
  8. <?php
  9. } else {
  10. header ('Location: index.php');
  11. }
  12. ?>


i druga sprawa to bezpieczeństwo sesji, a dokładnie czy kod:
  1. <?php
  2. if (!isset($_SESSION['kontrola_sesji'])){
  3. $_SESSION['kontrola_sesji'] = true;
  4. $_SESSION['adres_ip'] = $_SERVER['REMOTE_ADDR'];
  5. }
  6. if($_SESSION['adres_ip'] !== $_SERVER['REMOTE_ADDR']){
  7. $info = "Błąd: Próba przejęcia sesji!";
  8. }
  9. ?>
muszę dodać do każdego pliku?
Go to the top of the page
+Quote Post
dadexix
post 15.08.2008, 20:00:47
Post #2





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

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


php automatycznie kojaży ip, przegladarke i inne z sessją i użycie da niepowodzenie


--------------------
"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
xeo
post 16.08.2008, 07:39:48
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 28.10.2005

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


Nie wiem czy dobrze zrozumiałem, czyli wystarczy dać ten kod tylko w pliku z logowaniem?
Go to the top of the page
+Quote Post
Mlodycompany
post 16.08.2008, 07:56:23
Post #4





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


jak masz pętle foreach to w warunku dodaj break; ponieważ gdy masz 100 userów i user który chce sie zalogować jest pierwszy to wyszuka go, ale nadal bedzię szukało go w tablicy, a break; zastopuje działanie pętli czyli skrypt będzie bardziej optymalny
Go to the top of the page
+Quote Post
xeo
post 16.08.2008, 08:26:30
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 28.10.2005

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


ok dzięki break dodany smile.gif
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: 15.08.2025 - 04:15