Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt logowania a bezpieczeństwo
Axadiw
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 13.03.2005

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


Witam,

Wzialem sie ostatnio za skrypt logowania na moją stronke, jednak nie wiem czy jest on dostatecznie bezpieczny(nie znam sie na exploitach itp, wiec nie wiem jak go zlamac:P).
Kolejnym problemem jest dodanie pola "Zapamiętaj mnie", zeby informacje ze ktos jest zalogowany byly przechowywane nawet po restarcie kompa itd.
Nie znam sie na sesjach, wiedze bralem z paru tutoraiali, i wyszlo cos takiego.

BTW. Jak zrobic tak fajnie, ze identyfikator sesji jest przekazywany wraz z adrsem strony(metoda GET), czy cookies są wystarczająco bezpieczne?

Skrypt przechowuje informacje w MySql, tablica wyglada tak(export z phpmyadmin)

  1. CREATE TABLE `users` (
  2. `nr` int(20) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(20) NOT NULL DEFAULT '',
  4. `plec` varchar(20) NOT NULL DEFAULT '',
  5. `haslo` varchar(200) NOT NULL DEFAULT '',
  6. `data` date NOT NULL DEFAULT '0000-00-00',
  7. `email` varchar(50) NOT NULL DEFAULT '',
  8. `imie` varchar(50) NOT NULL DEFAULT '',
  9. `nazwisko` varchar(50) NOT NULL DEFAULT '',
  10. `ip` varchar(15) NOT NULL DEFAULT '',
  11. `user_level` smallint(6) NOT NULL DEFAULT '0',
  12. PRIMARY KEY (`nr`)
  13. ) TYPE=MyISAM AUTO_INCREMENT=50 ;


Skrypt rejestracji (index.php?mode=register)
  1. <?php
  2. function verifyEmail($email) {
  3.  $email = strtolower($email);
  4. return ereg("^[a-z0-9_.-]+@([a-z0-9_-]+.)+[a-z]{2,}$", $email);
  5. }
  6.  
  7. if (isset($_POST['plec']) AND isset($_POST['uname']) AND isset($_POST['passwd'])AND isset($_POST['passwd1']) AND isset($_POST['email'])AND isset($_POST['imie'])AND isset($_POST['nazwisko'])AND isset($_POST['ip']) )
  8. {
  9. $uname = $_POST['uname'];
  10. $email = $_POST['email'];
  11. $imie = $_POST['imie'];
  12. $nazwisko = $_POST['nazwisko'];
  13. $ip = $_POST['ip'];
  14. $passwd = $_POST['passwd'];
  15. $passwd1 = $_POST['passwd1'];
  16. $plec = $_POST['plec'];
  17.  if ($uname && $passwd && $passwd1 && $email && $imie && $nazwisko && $ip)
  18. {
  19. $data = date("Y-m-d");
  20. $uname = stripslashes($uname);
  21. $uname = ereg_replace(" ", "", $uname);
  22. $email = stripslashes($email);
  23. $imie = stripslashes($imie);
  24. $nazwisko = stripslashes($nazwisko);
  25. $ip = stripslashes($ip);
  26. $passwd = stripslashes($passwd);
  27. $passwd1 = stripslashes($passwd1);
  28. $email = ereg_replace(" ", "", $email);
  29. $imie = ereg_replace(" ", "", $imie);
  30. $nazwisko = ereg_replace(" ", "", $nazwisko);
  31. $ip = ereg_replace(" ", "", $ip);
  32. $passwd = ereg_replace(" ", "", $passwd);
  33. $passwd1 = ereg_replace(" ", "", $passwd1);
  34. $aa = mysql_query("SELECT * FROM users where login='$uname'");
  35. $znal = mysql_num_rows($aa);
  36. if ($znal==0){
  37. if ($passwd == $passwd1)
  38. {
  39. if (verifyEmail($email)==true){
  40. $passwd = md5($passwd);
  41. $res = mysql_query("INSERT INTO `users` (`login`,`haslo`,`email`, `imie`,`nazwisko`, `data`, `ip`, `plec`) VALUES ('$uname', '$passwd', '$email', '$imie', '$nazwisko', '$data', '$ip', '$plec')");
  42.  echo "<DIV id=opisy align=center>Dziękujemy za zarejestrowanie";
  43. echo "<P><A HREF=index.php>Kliknij tutaj</A> aby powrócić do strony głównej.</p></div>";
  44. }
  45. else {
  46.  echo "<DIV id=opisy align=center>Błędny e-mail.";
  47. echo "<P><A HREF=$PHP_SELF?mode=register>Kliknij tutaj</A> aby powrócić.</p></div>";}
  48. }
  49. }
  50. else
  51. {
  52. echo "<DIV id=opisy align=center>Taki uzytkownik już istnieje.";
  53. echo "<P><A HREF=$PHP_SELF?mode=register>Kliknij tutaj</A> aby powrócić.</p></div>";
  54. }
  55.  
  56. }
  57. else
  58. {
  59. echo "<DIV id=opisy align=center>Twoje hasła się nie pokrywają";
  60. echo "<P><A HREF=$PHP_SELF?mode=register>Kliknij tutaj</A> aby powrócić.</p></div>";
  61. }
  62. }
  63. else {
  64. echo <<<END
  65. <div id="belka">Rejestracja</div>
  66. <br>
  67. <FORM ACTION="" METHOD=post>
  68.  
  69. <table border="0" width="100%" cellspacing="0" cellpadding="0">
  70.   <tr>
  71. <td width="42%" align="right"><span id="opisy">Login:</span></td>
  72. <td width="58%"><span id="formularz"> <input type="text" name="uname" size="20"></span></td>
  73.   </tr>
  74.   <tr>
  75. <td width="42%" align="right"><span id="opisy">Hasło:</span></td>
  76. <td width="58%"><span id="formularz"><input type="password" name="passwd" size="20"></span></td>
  77.   </tr>
  78.   <tr>
  79. <td width="42%" align="right"><span id="opisy">Ponownie Hasło:</span></td>
  80. <td width="58%"><span id="formularz"> <input type="password" name="passwd1" size="20"></span></td>
  81.   </tr>
  82.   <tr>
  83. <td width="42%" align="right"><span id="opisy">Imię:</span></td>
  84. <td width="58%"><span id="formularz"> <input type="text" name="imie" size="20"></span></td>
  85.   </tr>
  86.   <tr>
  87. <td width="42%" align="right"><span id="opisy">Nazwisko:</span></td>
  88. <td width="58%"><span id="formularz"> <input type="text" name="nazwisko" size="20"></span></td>
  89.   </tr>
  90.   <tr>
  91.    <td width="42%" align="right"><span id="opisy">Płeć:</span></td>
  92. <td width="58%"><span id="formularz">
  93.  
  94. M
  95. <input name="plec" value="M" type="radio">
  96. K
  97. <input name="plec" value="K" type="radio">
  98.    </td>
  99.   </tr>
  100.   <tr>
  101.  
  102. <td width="42%" align="right"><span id="opisy">E-Mail:</span></td>
  103. <td width="58%"> <span id="formularz"><input type="text" name="email" size="20"></span></span></td>
  104. <input type="hidden" name="ip" size="20" value="$REMOTE_ADDR">
  105. </td></tr></table><center>
  106. <INPUT TYPE=image SRC=grafika/wyslij.gif BORDER=0 name=submit>
  107. </form><BR><span id="opis_glowny" stle="font-size:15pt">Należy wypełnić wszystkie pola !</span>
  108. END;
  109.  
  110.  }
  111.  
  112. ?>



Forma logowania z skryptem(index.php?mode=login)
  1. <?php
  2. if (isset($_POST['uname']) AND isset($_POST['passwd']))
  3. {
  4. $login = $_POST['uname'];
  5. $haslo = $_POST['passwd'];
  6. $odp = mysql_query("SELECT * FROM users where login='$login'");
  7. $razem = mysql_num_rows($odp);
  8. $wynik = mysql_fetch_array($odp);
  9. if ($razem!=0)
  10. {
  11. if (md5($haslo)==$wynik['haslo'])
  12. {
  13. $email = $wynik['email'];
  14. $plec = $wynik['plec'];
  15. $imie = $wynik['imie'];
  16. $nazwisko = $wynik['nazwisko'];
  17. $user_level = $wynik['user_level'];
  18. session_register("login");
  19. session_register("email");
  20. session_register("nazwisko");
  21. session_register("user_level");
  22. echo "<DIV id=opisy align=center>Haslo poprawne";
  23. echo "<P><A HREF=index.php>Kliknij tutaj</A> aby powrócić do strony głównej.</p></div>";
  24. }
  25. else
  26. echo 'Błędne haslo';
  27. }
  28. else
  29. echo 'Nie ma takiego uzytkownika';
  30. }
  31. else
  32. {
  33. echo <<<END
  34. <div id="belka">Logowanie</div>
  35. <br>
  36. <FORM ACTION="" METHOD=post>
  37.  
  38. <table border="0" width="100%" cellspacing="0" cellpadding="0">
  39.   <tr>
  40. <td width="42%" align="right"><span id="opisy">Login:</span></td>
  41. <td width="58%"><span id="formularz"> <input type="text" name="uname" size="20"></span></td>
  42.   </tr>
  43.   <tr>
  44. <td width="42%" align="right"><span id="opisy">Hasło:</span></td>
  45. <td width="58%"><span id="formularz"><input type="password" name="passwd" size="20"></span></td>
  46.   </tr>
  47. <input type="hidden" name="ip" size="20" value="$REMOTE_ADDR">
  48. </td></tr></table><center>
  49. <INPUT TYPE=image SRC=grafika/wyslij.gif BORDER=0 name=submit>
  50. </form>
  51. END;
  52. }
  53. ?>


a wylogowanie to(index.php?mode=logout)
  1. <?php
  2.  
  3. echo '<DIV id=opisy align=center>Wylogowano ' . $login . '</div>';
  4. ?>



To wszystko, przepraszam ze moze troche zamotałem, ale mam nadzieje ze zrozumieliscie:>

Ten post edytował Axadiw 6.07.2006, 10:56:54


--------------------
Galerio - galeria internetowa
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




A. Jasne. Masz pełną kontrolę nad cookies, bo są na twoim komputerze. nie polecam uzywania cookie do przenoszenia praw dostępu.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post

Posty w temacie
- Axadiw   Skrypt logowania a bezpieczeństwo   6.07.2006, 09:28:15
- - Cysiaczek   Uzywasz md5(), a varchar w polu haslo w bazie dany...   6.07.2006, 09:33:06
- - Axadiw   ok, zmienilem dlugosc pola na 32 chyba faktycznie...   6.07.2006, 09:46:35
- - Cysiaczek   Nie wygląda źle... http://www.php.net/ma...   6.07.2006, 09:49:41
- - Axadiw   ok, to jeszcze jedno pytanie: dane sa zapisywane w...   6.07.2006, 10:08:38
- - Cysiaczek   A. Jasne. Masz pełną kontrolę nad cookies, bo są n...   6.07.2006, 10:11:07
- - nasty_psycho   1) Czytaj dane z cookie : [PHP] pobierz, plaintext...   6.07.2006, 10:13:21
- - Axadiw   cos polecasz? przechowywanie danych w mysql a w co...   6.07.2006, 10:16:17
- - nasty_psycho   nie, w cookies mozesz trzymac dane ale odpowiednio...   6.07.2006, 10:21:24
- - Cysiaczek   heh. Ciekawe jak php.pl odczytuje cookie... Własni...   6.07.2006, 10:34:56
- - Axadiw   passworda nie musze trzymac podczas przegladania s...   6.07.2006, 11:10:30
- - Cysiaczek   Bo się nie odkodowuje, tylko porównuje   6.07.2006, 11:11:47
- - Axadiw   no rozumiem, ale gdzie mam trzymac niezakodowane d...   6.07.2006, 11:18:24
- - cichy19-   "Zapamiętaj mnie" możesz zrobić przy pom...   6.07.2006, 11:28:41
- - Axadiw   no, to jak mozesz... i ponawiam prosbe o te szyf...   6.07.2006, 12:56:02
- - NetJaro   Zamiast sprawdzania każdego elementu tablicy ...   6.07.2006, 14:35:55
- - borec   Cytat[PHP] pobierz, plaintext <?php$login = $_P...   6.07.2006, 15:01:47
- - Axadiw   [PHP] pobierz, plaintext <?php$uname = stripsla...   6.07.2006, 15:13:22
|- - borec   Cytat(Axadiw @ 6.07.2006, 16:13 ) [PHP] p...   6.07.2006, 15:26:05
- - Axadiw   ok, przepuszczam zmienne przez mysql_real_escape_s...   6.07.2006, 18:22:47
- - piwoszeq   zapamietaj mnie jest bardzo latwo napisac zapisu...   7.07.2006, 01:52:42


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 Aktualny czas: 22.08.2025 - 02:43