Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Session zabespieczenia....
Forum PHP.pl > Forum > Przedszkole
zaba12
Witam mam następujący problem zmienilem se cms z cookis na sessje i tu lezy błąd gdy wpisuje w adres tak

?_SESSION[login2]=pwned&_SESSION[haslo2]=ssss

to otwiera mi sie strona i niby ze jest zalogowany dany user a jak to zabespieczyć ? oto cały kodzik

Index.php

  1. <?php
  2. if($_SESSION['login2']==$login AND $_SESSION['haslo2']==$haslo)
  3. {
  4. echo '<table border="0" cellpadding="0" cellspacing="0" class="tabela">
  5.  
  6. <tr>
  7. <td width="100%" height="100%" align="center">
  8. <form method="post" action="zaloguj.php" name="f">
  9. <table border="0" cellpadding="0" cellspacing="0" width="220">
  10. <tr>
  11. <td width="220" class="szz"><div class="nn">CmS Frogss</div></td>
  12.  </tr>
  13.  
  14. <tr>
  15. <td width="220" height="100%" class="bor" align="center">
  16.  
  17. <table border="0" cellpadding="0" cellspacing="0" width="216">
  18. <tr>
  19. <td width="216" height="100%" class="bgs" align="center"><table border="0" cellpadding="0" cellspacing="0" width="180">
  20. <tr>
  21. <td width="47" height="25" class="szz1" align="right"><p class="ll">Login:</p></td>
  22.  
  23. <td width="133" height="25"><input class="input2" name="login" size="25"></td>
  24.  </tr>
  25. <tr>
  26. <td width="47" height="25" class="szz1" align="right"><p class="ll">Hasło:</p></td>
  27. <td width="133" height="25"><input class="input2" name="haslo" size="25" type="password"></td>
  28.  </tr>
  29. <tr>
  30. <td width="180" height="25" colspan="2" align="center" valign="bottom"><input type="submit" class="input2" value="Zaloguj się" name="zaloguj"><br />
  31. </td>
  32.  </tr>
  33.  <tr>
  34. <td width="2" height="2" colspan="2" align="center" valign="bottom"></td>
  35.  </tr>
  36.  </table>
  37.  
  38. </td>
  39. </tr>
  40. </table>
  41.  
  42. </td>
  43.  </tr>
  44.  </table>
  45. </form>
  46. </td>
  47.  </tr>
  48.  
  49.  </table>
  50. ';
  51. }
  52. else
  53. {
  54. echo '<table border="0" cellpadding="0" cellspacing="0" width="760" align="center">
  55. <tr>
  56. <td width="15" height="31"><img src="theme/1.gif" width="15" height="31" alt=""></td>
  57. <td width="530" height="31" class="bm"><div class="menu_marg">
  58. <span class="orr">Home</span><span class="menu_m">|</span>
  59. <a href="index.php" class="szz">Wersje językowe</a>
  60. <span class="menu_m">|</span><a href="index.php?cmd=1" class="szz">Newsy</a>
  61. <span class="menu_m">|</span><a href="index.php?cmd=admini" class="szz">Administratorzy</a>
  62. <span class="menu_m">|</span><a href="index.php?cmd=2" class="szz">Podstrony</a>
  63. <span class="menu_m">|</span><a href="index.php?cmd=9" class="szz">Konfiguracja</a>
  64. <span class="menu_m">|</span><a href="index.php?cmd=inne" class="szz">Dodatki</a>
  65. </p></td><td width="200" height="31" class="bm" align="right"><div class="menu_marg">
  66. <span class="szz">Zalogowany: </span><span class="orr">'.$zaloguj_login.'</span><span class="menu_m">|
  67. </span><a href="wyloguj.php" class="szz">Wyloguj</a></div></td>';
  68. }
  69. ?>


Zaloguj.php

  1. <?php include ('../config.php'); ?>
  2. <?php
  3. $login = $_POST[login];
  4. $haslo = md5($_POST['haslo']);
  5.  
  6. $query = "SELECT * FROM admin WHERE login1='$login';";
  7. $result = mysql_query ($query);
  8. $ile_user = mysql_num_rows($result);
  9.  
  10. if ($ile_user > 0)
  11. {
  12. $query2 = "SELECT * FROM admin WHERE login1='$login' AND
  13. haslo1='$haslo';";
  14. $result2 = mysql_query ($query2);
  15. $ile_user2 = mysql_num_rows($result2);
  16.  
  17. if ($ile_user2 > 0)
  18. {
  19. #setcookie ("login1_c", $login,time()+3600); /* traci ważność za godzinę */
  20. #setcookie ("haslo1_c", $haslo,time()+3600); /* traci ważność za godzinę */
  21. $_SESSION['login1'] = $login;
  22. $_SESSION['haslo1'] = $haslo;
  23. header("Location: index.php");
  24. }
  25. else
  26. {
  27. header("Location: index.php?c=badpass");
  28. }
  29. }
  30. else
  31. {
  32. header("Location: index.php?c=notfound&u=$login");
  33. }
  34. ?>
Ludvik
W taki sposób nie możesz zapisać danych w sesji. Jeżeli przesyłasz dane metodą get, to nie ma co kombinować:
?login2=login&haslo2=pass
  1. <?php
  2. $_SESSION['login2'] = $_GET['login2'];
  3. $_SESSION['haslo2'] = $_GET['haslo2'];
  4. ?>

Pomijam tu wszystkie kwestie bezpieczeństwa - brak sprawdzania zawartości zmiennych, przesyłanie hasła GET-em, dzięki czemu można je podglądnąć przeszukując historię. I dlaczego, jeżeli warunek z kodu pierwszego jest spełniony, to wyświetlasz formularz do zalogowania? Mi się wydaje, że jest odwrotnie...

Zadbałeś o to, że zmienne $login i $haslo są zainicjowane? Bo w skrypcie zaloguj, masz w nich dane, ale on jest raz wykonywany... Osobiście bym zmienił tego if-a, na:
  1. <?php
  2. if($_SESSION['login1']==$_GET['login2'] AND $_SESSION['haslo1']==$_GET['haslo2'])
  3. ?>
zaba12
Niestety ale nic to nie dało zadnej zmiany...........
piotrekkr
ehh kombinacje. polecam zrobic prosty formularz metoda POST go wyslac do skryptu i sprawdzic czy dane sie zgadzaja jak tak to do sesji dodac dane ze jest zalogowany i po problemie nie wiem po co to wogole metoda GET wysylac haslo przeciez to moze kazdy zobaczyc.
formularz:
  1. <form action="sprawdz_dane.php" method="post">
  2. <input type="text" name="login"><br />
  3. <input type="password" name="password"></form>


plik sprawdz_dane.php:
  1. <?php
  2. if(!empty($_POST['login']) && !empty($_POST['password'])){
  3. if($_POST['login']=='login' && $_POST['password']=='haslo'){
  4. $_SESSION['zalogowany']=TRUE;
  5. $_SESSION['login']=$_POST['login'];
  6. header('Location: strona_po_poprawnym_logowaniu.php');
  7. }else{
  8. echo 'niepoprawne dane';
  9. };
  10. }else{
  11. echo 'niepoprawne dane';
  12. };
  13. ?>
Kinool
a na poczatku dales session_start()questionmark.gif
piotrekkr
to nie jest wazne bo plik do sprawdzania nie wysyla zadnego naglowka do przegladarki wazne zeby session_start() wstawic przed wyslaniem jakiejkolwiek infotmacji do przegladarki tak ja robie i mi dziala
zaba12
no niestety panowie mi to niedziała;(
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.