Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> $_SESSION i Uwierzytelnianie - pytanie
MGreg
post
Post #1





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

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


Witam.
Męczę się nad bezpiecznym systemem uwierzytelniania i proszę ocenić, czy takie coś będzie bezpieczne:
  1. <?php
  2.  
  3. if(isset($_POST['login']) and isset($_POST['haslo']) and $_GET['action']=='zaloguj')
  4. {
  5. $query = mysql_query("select * from `users` where `login`='".mysql_real_escape_string($_POST['login'])."' and `haslo`='".mysql_real_escape_string(md5($_POST['haslo'])).'"');
  6. if(mysql_num_rows($query)>0)
  7.  {
  8.  $_SESSION['logged'] = 1;
  9.  $_SESSION['username'] = $_POST['login'];
  10.  }
  11. else
  12. {
  13. $_SESSION['logged']=0;
  14. {
  15. }
  16.  
  17.  if($_SESSION['logged']==1)
  18. {
  19.  /* JAKIŚ TAM PANEL ADMINISTRACYJNY */
  20. }
  21.  
  22. ?>


Głównie chodzi mi o to, czy ktoś może zmienić wartość tablicy sesji $_SESSION['logged'] na 1 i tym samym zdobyć uprawnienia admina.

Ten post edytował MGreg 4.06.2008, 17:35:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MGreg
post
Post #2





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

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


Zobaczcie czy teraz jest lepiej. Dodałem sprawdzanie długości loginu i hasła, wstawiłem session_regenerate_id();, dodałem limit do zapytania, wywaliłem zapisywanie loginu do sesji i dodałem wylogowywanie.

  1. <?php
  2. include('config.php');
  3. pol_mysql();
  4.  
  5. if($_GET['action']=='logout')
  6. {
  7. if($_SESSION['logged']==1)
  8. {
  9. $_SESSION['logged']=0;
  10. echo "<b>zostałeś wylogowany<b>, jeśli nie zostaniesz przeniesiony na stronę logowania kliknij <a href=login.php>tutaj</a>";
  11. header("refresh: 5,login.php");
  12. }
  13. else
  14. {
  15. echo "nie byłeś zalogowany!";
  16. }
  17. }
  18.  
  19. if(!isset($_SESSION['logged'])){$_SESSION['logged']=0;}
  20.  
  21. if(isset($_POST['login']) and isset($_POST['haslo']))
  22.  {  
  23.  if(strlen($_POST['login'])<25 and strlen($_POST['haslo'])<25)
  24.  {  
  25.  $query = mysql_query("select `username`,`user_password` from `phpbb_users` where `username`='".mysql_real_escape_string($_POST['login'])."' and `user_password`='".mysql_real_escape_string(md5($_POST['haslo']))."' limit 1");
  26.  
  27.  if(mysql_num_rows($query)===1)
  28.  {  
  29.  $_SESSION['logged'] = 1;  
  30.  }
  31.  else
  32. {
  33. echo "Błędny login lub hasło";
  34. $_SESSION['logged']= 0;
  35. }
  36.  }  
  37.  else
  38. {
  39. echo "Zbyt długi login lub hasło";
  40. }  
  41.  }
  42.  
  43.  if($_SESSION['logged']==1)
  44.  {  
  45.  echo "Jakiś tam panel admina <a href=login.php?action=logout>Wyloguj</a>";  
  46.  }  
  47.  
  48.  
  49.  
  50. if($_SESSION['logged']==0 and $_GET['action']!=='logout')
  51. {
  52. ?>
  53. <form action="login.php" method=post>
  54. login <input type=text name=login><br>
  55. hasło <input type=password name=haslo><br>
  56. <input type=submit value=zaloguj>
  57. </form>
  58. <?
  59. }
  60.  
  61. ?>


Czy teraz jest lepiej?

Ten post edytował MGreg 5.06.2008, 10:27:15
Go to the top of the page
+Quote Post

Posty w temacie
- MGreg   $_SESSION i Uwierzytelnianie - pytanie   4.06.2008, 17:32:36
- - marcio   Ja bym zmienil jak juz cos jedna rzecz zamiast daw...   4.06.2008, 17:38:11
- - MGreg   Umieściłem tylko przykład, dlatego nie dodawałem e...   4.06.2008, 17:52:21
- - pyro   jeszcze zabezpieczenie przed XSS by można było ^^   4.06.2008, 17:58:16
- - Shili   Nie jest, ale czy dyrektywa session.use.cookies.on...   4.06.2008, 18:10:55
|- - MGreg   Cytat(Shili @ 4.06.2008, 19:10:55 ) @...   4.06.2008, 18:15:58
|- - pyro   Cytat(Shili @ 4.06.2008, 19:10:55 ) N...   4.06.2008, 20:15:32
|- - LonelyKnight   Cytat(pyro @ 4.06.2008, 21:15:32 ) No...   4.06.2008, 21:02:40
|- - Cotter   Cytat(LonelyKnight @ 4.06.2008, 22:02...   5.06.2008, 10:22:53
||- - LonelyKnight   Cytat(Cotter @ 5.06.2008, 11:22:53 ) ...   5.06.2008, 11:27:19
|- - pyro   Cytat(LonelyKnight @ 4.06.2008, 22:02...   5.06.2008, 15:49:34
|- - LonelyKnight   Cytat(pyro @ 5.06.2008, 16:49:34 ) Au...   6.06.2008, 12:00:38
- - Shili   Nie nie, to było do @pyro. Powinnam była wyraźniej...   4.06.2008, 18:28:19
- - Shili   Nieprawda, ale przekazywane jest tylko login i has...   4.06.2008, 20:27:34
- - MGreg   Co do XSS stosuję strip_tags(); i chyba to mi wyst...   4.06.2008, 20:54:44
- - MGreg   Zobaczcie czy teraz jest lepiej. Dodałem spra...   5.06.2008, 08:25:43
- - MGreg   Wracając do tematu... czy może ktoś obiektywnie oc...   5.06.2008, 11:49:12
- - LonelyKnight   Może być. session_regenerate_id(true) ...   5.06.2008, 12:33:43
- - wlamywacz   Nie Select * tylko wybrane pola czyli Select pole1...   5.06.2008, 16:55:39
|- - pyro   Cytat(wlamywacz @ 5.06.2008, 17:55:39...   5.06.2008, 18:44:24
- - Shili   Dalej nie ma tam żadnej wzmianki o tym, że autor c...   5.06.2008, 20:25:36
- - empathon   http://www.acros.si/papers/session_fixation.pdf P...   5.06.2008, 23:59:08


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

 



RSS Aktualny czas: 26.12.2025 - 13:39