Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Czy to są poprawnie zrobiona sesja?, czy jest "bezpieczna" ?
breq
post 4.10.2011, 20:11:31
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.10.2011

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


Hej!

Zaczynam zabawę z sesjami, napisałem coś takiego:

logowanie:
  1. <form enctype='multipart/form-data' action='login.php' method='POST'>
  2. <table border='0'>
  3. <tr>
  4. <td>Login:</td>
  5. <td><input type='text' name='login' size='20' style='border: 1px solid Black'/></td>
  6. </tr>
  7. <tr>
  8. <td>Hasło:</td>
  9. <td><input type='password' name='haslo' size='20' style='border: 1px solid Black'/></td>
  10. <td rowspan='2'><input type='image' src='gfx/login.png'width='24' value='zaloguj' alt='zaloguj' style='vertical-align:middle;' onfocus='this.blur()'/></td>
  11. </tr>
  12. </table>



login.php:
  1. if($haslo_hash==$haslo_z_bazy)
  2. {
  3. if (!isset($_SESSION['zalogowany']))
  4. {
  5. $_SESSION['zalogowany'] = 1;
  6. $login=$_SESSION['login'];
  7. }
  8. echo "<script>setTimeout('document.location = \"index.php\"', 1);</script>";
  9. }
  10. else
  11. {
  12. echo "<div align='center'><b>Ups!</b><br/>Cos poszlo nie tak!</div>";
  13.  
  14. }


i sam nagłówek:
  1. <?php
  2. if ($_SESSION['zalogowany'] == 1) {
  3. $_SESSION['login']=$_POST["login"];
  4. $login=$_SESSION['login'];
  5. }
  6. ?>



Czytalem troche o sesjach, m. in. tutaj
http://pl.wikibooks.org/wiki/PHP/Sesje
i zabezpiecze je jeszcze adresem IP, natomiast ciekawi mnie co myslicie o takim sposobie logowanie?
Przypuszczam, ze jest to wręcz śmieszne zabezpiczenie, może macie dostępne wasze przykłady jak używacie sesji albo jakiś konkretny poradnik?

Ten post edytował breq 4.10.2011, 20:12:53
Go to the top of the page
+Quote Post
CuteOne
post 4.10.2011, 21:50:12
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


zamiast
echo "<script>setTimeout('document.location = \"index.php\"', 1);</script>";

uzyj nagłówka
header('Location: http:/ /mojewww .pl/index.php');

a to "$login=$_SESSION['login'];" po co?

ps. co do tytułu tematu - google -> php zabezpieczenie sesji

Ten post edytował CuteOne 4.10.2011, 21:54:09
Go to the top of the page
+Quote Post
siwy21
post 5.10.2011, 07:53:26
Post #3





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

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


Jeśli chcesz zrobić bezpiecznie to zapisuj do sesji dodatkowo np. IP użytkownika i porównuj za każdym wywołaniem z tym, które ma user. Inaczej jeśli ktoś przejmie cookie sesji innego usera, będzie mógł skorzystać z jego uprawnień

dodaj do skryptu logowania (tam gdzie logujesz usera) np.
  1. $_SESSION['verify'] = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $salt);

($salt - to losowa kombinacja znaków, stwórz gdzieś wcześniej w skrypcie tą zmienną i wypełnij losowymi danymi) .np

  1. $salt = "w}V{UOv%0_MV$[yR4,Tv*RdYCs.Oq^bM[XBEdXy3H.qzUO_qsCLo(";


Następnie porównaj przy każdym wywołaniu strony np. tak:

  1. if (!$_SESSION['verify'] || $_SESSION['verify'] != md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $salt)) {
  2. //skrypt do wykonania jeśli hashe się różnią (czyli user ma inne IP lub przeglądarke)
  3. }


To powinno dodać jakieś zabezpieczenie do sesji wink.gif


btw.
  1. $_SESSION['login']=$_POST["login"];


dobra praktyka, to nigdy nie wierzyć użytkownikowi wink.gif Zabezpieczaj dane, które pobierasz z $_POST, $_GET, $_COOKIE wink.gif np.
  1. $_SESSION['login']=htmlentities($_POST["login"], ENT_QUOTES);


Ten post edytował siwy21 5.10.2011, 07:59:49
Go to the top of the page
+Quote Post
breq
post 5.10.2011, 09:19:23
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.10.2011

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


dzieki Panowie, z pewnością skorzystam z waszych rad smile.gif
to biorę się za pisanie :]
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: 14.08.2025 - 09:46