Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziury w systemie logowania
Forum PHP.pl > Forum > PHP
SN@JPER^
Witam,

Robie pierwszy raz system rejestracji i logowania i nie wiem czy ma jakieś dziury:

PS; nie kończyłem go bo nie wiem czy sie opłaca, ze względu na dziury w nim.

config.php

  1. <?php
  2.  
  3. $host = "localhost";
  4. $user_baza = "root";
  5. $haslo_baza = "";
  6. $baza = "beta_cms";
  7.  
  8.  
  9. $conn = mysql_connect($host, $user_baza, $haslo_baza);
  10. $db = mysql_select_db($baza);
  11.  
  12. if(!$conn){echo '<div class="tekst_warunek"><b>Nie</b> polaczono z baza danych</div>'; exit;}
  13. if(!$db){echo '<div class="tekst_warunek"><b>Nie</b> wybrano bazy danych</div>'; exit;}
  14.  
  15.  
  16. $kodowanie = "SET NAMES 'latin2'";
  17. $qu = mysql_query($kodowanie);
  18.  
  19. if(!$qu){echo '<div class="tekst_warunek"><b>Nie</b> zmieniono kodowania znaków</div>'; exit;}
  20.  
  21.  
  22. $adres_strony = "http://localhost/bcms/";
  23. $druzyna_rejestracja = "Tottenhamu";
  24.  
  25.  
  26. ?>




user_panel.php

  1. <?php
  2. ?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  7. <title>Untitled Document</title>
  8. </head>
  9.  
  10. <body>
  11. <?php
  12. include "config.php";
  13.  
  14. $get = $_GET['co'];
  15.  
  16. switch($get)
  17. {
  18.  
  19. default:
  20. if($_SESSION['zalogowany_user'])
  21. {
  22.  
  23. echo 'Witaj ' ;
  24. echo $_SESSION['zalogowany_user'] ;
  25. echo ' !';
  26. echo '<br /> ';
  27. echo '<a href="wylog.php">Wyloguj</a>';
  28.  
  29. }
  30.  
  31. else
  32. {
  33. ?>
  34.  
  35. <form action="logowanie.php" method="post"> 
  36. <table align="center" width="250" border="0">
  37.  
  38.  
  39. <tr>
  40. <td align="left">Login: </td> <td align="left"><input type="text" name="login" /></td>
  41. </tr>
  42.  
  43. <tr>
  44. <td align="left">Haslo: </td><td><input type="password" name="haslo" /></td>
  45. </tr>
  46.  
  47. <tr>
  48. <td colspan="2"><input type="submit" value="Zaloguj" /></td>
  49. </tr>
  50.  
  51. </form>
  52. <?php
  53. }
  54.  
  55. break;
  56.  
  57.  
  58. case edytuj:
  59.  
  60. $login_edycja = $_SESSION['zalogowany_user'];
  61.  
  62. $zapytanie = "select * from `user` where `login` = '".$login_edycja."'";
  63. $query = mysql_query($zapytanie);
  64. $dane = mysql_fetch_array($query);
  65.  
  66.  
  67. $haslo = stripslashes($dane['haslo']);
  68. $imie = stripslashes($dane['imie']);
  69. $nazwisko = stripslashes($dane['nazwisko']);
  70. $miejscowosc = stripslashes($dane['miejscowosc']);
  71. $woj = stripslashes($dane['woj']);
  72. $dzien = stripslashes($dane['dzien']);
  73. $miesiac = stripslashes($dane['miesiac']);
  74. $rok = stripslashes($dane['rok']);
  75. $www = stripslashes($dane['www']);
  76. $gg = stripslashes($dane['gg']);
  77. $tlen = stripslashes($dane['tlen']);
  78. $icq = stripslashes($dane['icq']);
  79. $kibic_od = stripslashes($dane['kibic_od']);
  80. $ulubiony_zawodnik = stripslashes($dane['ulubiony_zawodnik']);
  81. $zainteresowania = stripslashes($dane['zainteresowania']);
  82. $pokazywac_mail = stripslashes($dane['pokazywac_mail']);
  83. ?>
  84.  
  85.  
  86.  
  87. <form action="?co=update" method="post"> 
  88. <table align="center" border="0" width="250">
  89.  
  90.  
  91.  
  92. <tr>
  93. <td align="left">Nowe haslo: </td><td align="left"><input type="password" name="haslo" /></td>
  94. </tr>
  95.  
  96. <tr>
  97. <td align="left">Powtórz haslo: </td><td align="left"><input type="password" name="haslo1" /></td>
  98. </tr>
  99.  
  100. <tr>
  101. <td align="left">Imie: </td><td align="left"><input type="text" name="imie" value="<?php echo $imie; ?>" /></td>
  102. </tr>
  103.  
  104. <tr>
  105. <td align="left">Nazwisko: </td><td align="left"><input type="text" name="nazwisko" value="<?php echo $nazwisko; ?>" /></td>
  106. </tr>
  107.  
  108. <tr>
  109. <td align="left">Miejscowosc: </td><td align="left"><input type="text" name="miejscowosc" value="<?php echo $nazwisko; ?>" /></td>
  110. </tr>
  111.  
  112. <tr>
  113. <td align="left">Wojewodztwo: </td><td align="left">
  114. <select name="woj">
  115. <option value="<?php echo $woj;?>"><?php echo $woj; ?></option>
  116. <option value="nie dotyczny">nie dotyczny</option>
  117. <option value="dolnoslaskie">dolnoslaskie</option>
  118. <option value="kujawsko-pomorskie">kujawsko-pomorskie</option>
  119. <option value="lubelskie">lubelskie</option>
  120. <option value="ubuskie">lubuskie</option>
  121. <option value="lódzki">lódzkie</option>
  122. <option value="malopolskie">malopolskie</option>
  123. <option value="mazowieckie">mazowieckie</option>
  124. <option value="opolskie">opolskie</option>
  125. <option value="podkarpackie">podkarpackie</option>
  126. <option value="podlaskie">podlaskie</option>
  127. <option value="pomorskie">pomorskie</option>
  128. <option value="slaskie">slaskie</option>
  129. <option value="swietokrzyskie">swietokrzyskie</option>
  130. <option value="warminsko-mazurskie">warminsko-mazurskie</option>
  131. <option value="wielkopolskie">wielkopolskie</option>
  132. <option value="zachodnio-pomorskie" selected>zachodnio-pomorskie</option
  133. ></select>
  134.  
  135. </td>
  136. </tr>
  137.  
  138. <tr>
  139. <td align="left">Data urodzenia(dd.mm.rrrr): </td><td align="left">
  140. <input type="text" name="dzien" value="<?php echo $dzien; ?>" size="2" />
  141. <input type="text" name="miesiac" value="<?php echo $miesiac; ?>" size="2" />
  142. <input type="text" name="rok" value="<?php echo $rok; ?>" size="3" />
  143. </td>
  144. </tr>
  145.  
  146. <tr>
  147. <td align="left">Strona www: </td><td align="left"><input type="text" name="www" value="<?php echo $www; ?>" /></td>
  148. </tr>
  149.  
  150. <tr>
  151. <td align="left">Numer GG: </td><td align="left"><input type="text" name="gg" value="<?php echo $gg; ?>" /></td>
  152. </tr>
  153.  
  154. <tr>
  155. <td align="left">Tlen: </td><td align="left"><input type="text" name="tlen" value="<?php echo $tlen; ?>" /></td>
  156. </tr>
  157.  
  158. <tr>
  159. <td align="left">ICQ: </td><td align="left"><input type="text" name="icq" value="<?php echo $icq; ?>" /></td>
  160. </tr>
  161.  
  162. <tr>
  163. <td align="left">Kibic <?php echo "$druzyna_rejestracja";?> od: </td><td align="left"><input type="text" name="kibic_od" value="<?php echo $kibic_od; ?>" /></td>
  164. </tr>
  165.  
  166. <tr>
  167. <td align="left">Ulubiony Zawodnik <?php echo "$druzyna_rejestracja";?> : </td><td align="left"><input type="text" name="ulubiony_zawodnik" value="<?php echo $ulubiony_zawodnik; ?>" /></td>
  168. </tr>
  169.  
  170. <tr>
  171. <td align="left">Zainteresowania: </td><td align="left"><textarea name="zainteresowania" rows="5" cols="15"><?php echo $zainteresowania; ?></textarea></td>
  172. </tr>
  173.  
  174. <tr>
  175. <td align="left" colspan="2"><input type="checkbox" name="pokazywac_mail" value="1" /> Nie pokazuj email na stronie</td>
  176. </tr>
  177.  
  178. <tr>
  179. <td align="center" colspan="2"><input type="submit" value="Nastepny krok" /> <input type="reset" value="Reset" /></td>
  180. </tr>
  181.  
  182.  
  183. </table>
  184. </form>
  185.  
  186. <?php
  187. break;
  188.  
  189.  
  190.  
  191. case update:
  192.  
  193.  
  194. if(!$_POST['haslo'] == $_POST['haslo1']){echo 'hasla nie pasuja do siebie'; exit;}
  195.  
  196. $haslo2 = addslashes($_POST['haslo']);
  197. $imie = addslashes($_POST['imie']);
  198. $nazwisko = addslashes($_POST['nazwisko']);
  199. $miejscowosc = addslashes($_POST['miejscowosc']);
  200. $woj = addslashes($_POST['woj']);
  201. $dzien = addslashes($_POST['dzien']);
  202. $miesiac = addslashes($_POST['miesiac']);
  203. $rok = addslashes($_POST['rok']);
  204. $www = addslashes($_POST['www']);
  205. $gg = addslashes($_POST['gg']);
  206. $tlen = addslashes($_POST['tlen']);
  207. $icq = addslashes($_POST['icq']);
  208. $kibic_od = addslashes($_POST['kibic_od']);
  209. $ulubiony_zawodnik = addslashes($_POST['ulubiony_zawodnik']);
  210. $zainteresowania = addslashes($_POST['zainteresowania']);
  211. $pokazywac_mail = addslashes($_POST['pokazywac_mail']);
  212.  
  213. $zapytanie = "update `user` set `haslo` = '".md5($haslo2)."',
  214. `imie` = '".$imie."',
  215. `nazwisko` = '".$nazwisko."',
  216. `miejscowosc` = '".$miejscowosc."',
  217. `woj` = '".$woj."',
  218. `dzien` = '".$dzien."',
  219. `miesiac` = '".$miesiac."',
  220. `rok` = '".$rok."',
  221. `www` = '".$www."',
  222. `gg` = '".$gg."',
  223. `tlen` = '".$tlen."',
  224. `icq` = '".$icq."',
  225. `kibic_od` = '".$kibic_od."',
  226. `ulubiony_zawodnik` = '".$ulubiony_zawodnik."',
  227. `zainteresowania` = '".$zainteresowania."',
  228. `pokazywac_mail` = '".$pokazywac_mail."' where `login` = '".$login_edycja."' limit 1";
  229.  
  230. $query = mysql_query($zapytanie);
  231.  
  232. if($query){echo 'zmieniono dane';}
  233. else{echo 'nie zmieniono';}
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240. break;
  241. }
  242. ?>
  243.  
  244. </body>
  245. </html>





wylog.php

  1. <?php
  2.  
  3. $stary_uzyt=$_SESSION['zalogowany_user']; // przechowanie do sprawdzenie czy logowanie nastąpiło
  4. unset($_SESSION['zalogowany_user']);
  5. ?>
  6. <html>
  7. <body>
  8. <h1>Wylogowanie</h1>
  9. <?php
  10. if (!empty($stary_uzyt))
  11. {
  12. echo 'Wylogowano.<br />';
  13. }
  14. else
  15. {
  16. // jeżeli brak zalogowania, lecz w jakiś sposób uzyskany dostęp do strony
  17. echo 'Użytkownik niezalogowany, tak więc brak wylogowania.<br />';
  18. }
  19. ?>
  20. <a href="user_panel.php">Powrót do strony głównej</a>
  21. </body>
  22. </html>


rejestracja.php

[edit - revyag]
Nie wklejaj takiego długiego kodu. Tylko najważniejsze części
misiek172
sory ze to pisze ale wydaje mi się że można skrócić ten kod o 2x i bedzie to samo winksmiley.jpg.
SN@JPER^
A pozatym jakeis dziury sa? :]
PiratNowegoPokolenia
małe pytanie ... gdzie tu w ogóle jest fragment odpowiadający za logowanie ?
SN@JPER^
"[edit - revyag]
Nie wklejaj takiego długiego kodu. Tylko najważniejsze części"

wstawi na nowo

logowanie.php

  1. <?php
  2. ?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  7. <title>Untitled Document</title>
  8. </head>
  9.  
  10. <body>
  11. <?php
  12.  
  13. include "config.php";
  14.  
  15. if(isset($_POST['login']) and isset($_POST['haslo']))
  16. {
  17.  
  18. $login = $_POST['login'];
  19. $haslo = $_POST['haslo'];
  20.  
  21. $zapytanie = "select * from `user` where `login` = '".$login."' and `haslo` = '".md5($haslo)."'";
  22. $query = mysql_query($zapytanie);
  23. $ilosc = mysql_num_rows($query);
  24. $dane = mysql_fetch_array($query);
  25.  
  26. $login_log = stripslashes($dane['login']);
  27. $haslo_log = htmlspecialchars($dane['haslo']);
  28.  
  29. //prawdilowy login
  30.  
  31.  
  32.  
  33.  
  34. if($ilosc > 0)
  35. {
  36.  
  37. $_SESSION['zalogowany_user'] = stripslashes($dane['login']);
  38.  
  39.  
  40. echo 'jupi zalogowano <br />';
  41. echo '<a href="user_panel.php">powrót</a>';
  42. }
  43.  
  44. else
  45. {
  46.  
  47. //zapytani login 
  48. $zapytanie_login = "select * from `user` where login = '".$_POST['login']."'";
  49. $query_login = mysql_query($zapytanie_login);
  50. if(!mysql_num_rows($query_login) > 0)
  51. {echo "nie istnieje taki uzytkownik jak $login"; exit;}
  52.  
  53.  
  54.  
  55. //zapytani haslo 
  56. $zapytanie_haslo = "select * from `user` where haslo = '".$_POST['haslo']."'";
  57. $query_haslo = mysql_query($zapytanie_haslo);
  58. if(!mysql_num_rows($query_haslo) > 0)
  59. {echo "zle haslo dla uzytkownika $login"; exit;}
  60.  
  61. }
  62.  
  63.  
  64. }
  65. ?>
  66.  
  67. </body>
  68. </html>
PiratNowegoPokolenia
stripslashes używasz a addslashes to już nie ?
  1. <?php
  2. $zapytanie_login = "select * from `user` where login = '".$_POST['login']."'";
  3. ?>

Tu byk ...
  1. <?php
  2. $zapytanie_haslo = "select * from `user` where haslo = '".$_POST['haslo']."'";
  3. ?>

Tu byk ...
pozatym co to wogóle ma robić
1 zapytanie pobiera ci 1 rekord w którym login jest taki jak w tablicy POST
pomijając to że MySQL injection masz jak w banku to jeszcze to zapytanie nic nie robi ...
2 pobiera nazwę gościa który ma takie hasło jak podano... niekoniecznie ten sam login ...
poza tym hasła wszyscy biorą w md5() ... to trochę utrudnia hakerowi sprawę ...
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.