Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Prośba o sprawdzenie bezpieczeństwa logowania
kaznodzieja
post
Post #1





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

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


Witam!
Mam prośbę o sprawdzenie bezpieczeństwa skryptu logowania z różnymi uprawnieniami, wszelkie uwagi sugestie mile widziane. Dodatkowo prosiłbym o jakiś pomysł na zabezpieczenie pliku baza.php
Login w przykładzie asd@asd.pl hasło admin.

Pliki do pobrania z http://vlaho.pl/test.7z

plik: logowanie.php
  1. <?php
  2. include ("baza.php");
  3.  
  4. $akcja = $_REQUEST['akcja'];
  5.  
  6.  
  7. switch($akcja) {
  8.  
  9.  
  10.  
  11.  
  12. // --------------------------------default------------------------------------
  13.  
  14. default:
  15. if (isset($_SESSION['prawa']) and isset($_SESSION['login']) and isset($_SESSION['password'])){
  16.  
  17. echo "<br /><center>Jestes zalogowany jako: <br /> <a href=logowanie.php?akcja=przerzut target='_parent'>".$_SESSION['login']."</a><br /><a href=logowanie.php?akcja=przerzut&login=logout target='_parent'>Wyloguj</a></center>";
  18. }else{
  19.  
  20. echo'<form action="logowanie.php?akcja=logowanie" target="_parent" method="post">
  21. <table width="25%" border="0" align="center">
  22. <tr>
  23. <td><div class="text2">Login:</div></td>
  24. <td><input type="text" name="login" size="15" /></td>
  25. </tr>
  26. <tr>
  27. <td><div class="text2">Haslo:</div></td>
  28. <td><input type="password" name="password" size="15"/></td>
  29. </tr>
  30. <tr>
  31. <td></td>
  32. <td><input type="submit" name="submit" value="Zaloguj" /></td>
  33. </tr>
  34. </table>
  35. </form>';
  36. }
  37.  
  38.  
  39. break;
  40.  
  41. //---------------------SPRAWDZENIE JAKIE MASZ PRAWA----------------------------
  42. case "przerzut":
  43.  
  44. if($_GET['login']<>"logout"){
  45.  
  46. if (isset($_SESSION['login']) and isset($_SESSION['password']) and isset($_SESSION['losowy_kod'])){
  47.  
  48. $login=$_SESSION['login'];
  49. $pass=$_SESSION['password'];
  50.  
  51. $wyk = mysql_query('SELECT login, password, prawa, stan FROM '.$prefiks.'admins WHERE email=\''.$login.'\' AND password=\''.$pass.'\'');
  52. $ile = mysql_num_rows($wyk);
  53. if ($ile>0){
  54. $w = mysql_fetch_array($wyk);
  55. $prawa=$w['prawa'];
  56. $stan=$w['stan'];
  57. if ($stan==0){
  58. if ($prawa==1){
  59. //header("Location: logowanie.php?akcja=panel_a");
  60. echo "panel administratora";
  61. }
  62. if ($prawa==2){
  63. // header("Location: logowanie.php?akcja=panel_u");
  64. echo "panel uzytkownika";
  65. }
  66. }else{
  67. header("Location: index.php");
  68. }
  69.  
  70. }else{
  71. header("Location: index.php");
  72. }
  73. }else{
  74. // cosik();
  75. header("Location: index.php");
  76. }
  77. }else{
  78. header("Location: index.php");
  79. }
  80.  
  81.  
  82. break;
  83.  
  84. // --------------------------------LOGOWANIE------------------------------------
  85.  
  86. case "logowanie":
  87. //session_start();
  88.  
  89.  
  90. include_once('baza.php');
  91.  
  92. if ( $_POST['login'] && $_POST['password'] ){
  93. $login=mysql_escape_string(strip_tags($_POST['login']));
  94. $pass=mysql_escape_string(strip_tags($_POST['password']));
  95.  
  96. $wyk = mysql_query('SELECT * FROM '.$prefiks.'admins WHERE email=\''.$login.'\'');
  97. $ile = mysql_num_rows($wyk);
  98. if ($ile>0){
  99.  
  100. $wyk = mysql_query('SELECT * FROM '.$prefiks.'admins WHERE email=\''.$login.'\' AND password=\''.md5($pass).'\'');
  101. $ile = mysql_num_rows($wyk);
  102. if ($ile>0){
  103. $w = mysql_fetch_array($wyk);
  104. $prawa=$w['prawa'];
  105. $stan=$w['stan'];
  106. $ost_log=$w['ost_log_tmp'];
  107. $id_uzyt=$w['id'];
  108. if ($stan==0){
  109. $_SESSION['login'] = $_POST['login'];
  110. $_SESSION['password'] = md5($_POST['password']);
  111. $_SESSION['prawa']= $prawa;
  112. $_SESSION['losowy_kod']='k3Dc6a^s';
  113. $ost_log_tmp=date("Y-m-d G:i:s",time());
  114. $_SESSION['ost_log']=$ost_log;
  115. mysql_query("UPDATE ".$prefiks."admins SET ost_log = '$ost_log', ost_log_tmp='$ost_log_tmp' WHERE id ='$id_uzyt';");
  116. if($prawa==1 or $prawa==2){
  117. if ($prawa==1){
  118. // header("Location: logowanie.php?akcja=panel_a");
  119. echo "panel administratora";
  120. }
  121. if ($prawa==2){
  122. // header("Location: logowanie.php?akcja=panel_u");
  123. echo "panel uzytkownika";
  124. }
  125.  
  126. }else{
  127. echo"nie posiada odpowiednich uprawnien";
  128. }
  129.  
  130. }else{
  131. echo"uzytkownik został zablokwany";
  132. }
  133. }else{
  134. echo"Nie prawidłowy login lub hasło";
  135. }
  136. }else{
  137. echo"Uzytkownik nie istnieje";
  138. }
  139. }else{
  140. echo"Uzupelnij pola formularza";
  141. }
  142.  
  143. break;
  144.  
  145.  
  146. // -------------------------ŁADOWANIE PANELU ADMINISTRATORA----------------------
  147. case "panel_a":
  148.  
  149. if (isset($_SESSION['login']) and isset($_SESSION['password']) and isset($_SESSION['losowy_kod'])){
  150.  
  151. $login=$_SESSION['login'];
  152. $pass=$_SESSION['password'];
  153.  
  154. $wyk = mysql_query('SELECT login, password, prawa, stan FROM '.$prefiks.'admins WHERE email=\''.$login.'\' AND password=\''.$pass.'\'');
  155. $ile = mysql_num_rows($wyk);
  156. if ($ile>0){
  157. $w = mysql_fetch_array($wyk);
  158. $prawa=$w['prawa'];
  159. $stan=$w['stan'];
  160. if ($stan==0){
  161. if ($prawa==1){
  162. echo "panel administratora";
  163. }
  164. }else{
  165. header("Location: index.php");
  166. }
  167.  
  168. }else{
  169. header("Location: index.php");
  170. }
  171.  
  172. // cosik();
  173. header("Location: index.php");
  174. }
  175.  
  176.  
  177. break;
  178.  
  179.  
  180. }?>


plik: baza.php
  1. <?
  2. $host = "localhost";
  3. $user = "root";
  4. $pass = "";
  5. $base = "test";
  6. $prefiks="sb_";
  7. $link_mysql=mysql_connect($host, $user, $pass) or die('Nie można nawišzać połšczenia z MySQL-em');
  8. mysql_selectdb($base) or die ('Nie można nawišzać połšczenia z bazš danych');
  9.  
  10. ?>


  1. CREATE TABLE IF NOT EXISTS `sb_admins` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  4. `login` varchar(255) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  5. `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL DEFAULT '',
  6. `imie` varchar(15) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  7. `nazwisko` varchar(20) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  8. `kod` varchar(6) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  9. `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL DEFAULT '',
  10. `prawa` int(1) NOT NULL DEFAULT '0',
  11. `urodz` date NOT NULL,
  12. `stan` int(1) NOT NULL,
  13. `ost_log` datetime NOT NULL,
  14. `ost_log_tmp` datetime NOT NULL,
  15. `reg` int(1) NOT NULL,
  16. PRIMARY KEY (`id`)
  17. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=49 ;
  18.  
  19.  
  20. INSERT INTO `sb_admins` (`id`, `date`, `login`, `password`, `imie`, `nazwisko`, `kod`, `email`, `prawa`, `urodz`, `stan`, `ost_log`, `ost_log_tmp`, `reg`) VALUES
  21. (1, '2006-11-20 00:18:36', 'asd@asd.pl', '21232f297a57a5a743894a0e4a801fc3', 'Jan', 'Kowalski', '', 'asd@asd.pl', 2, '1980-01-01', 0, '2012-02-28 18:18:25', '2012-02-28 19:11:03', 0);
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Niktoś
post
Post #2





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Odnośnie bezpieczeńśtwa ,a gdzie masz walidacje pól formularza? Zabezpiecz zapytania SQL przed sql injection.Przydało by się jakąś recaptche zaimplikować na formularze rejestracji jak to ma być super bezpieczne.Nie chciałbyś aby jakiś bot napierniczał ci śmiecie do bazy danych.Troszeczkę roboty jeszcze Ciebie czeka.

Ten post edytował Niktoś 5.03.2012, 11:04:00
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 09:40