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

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: 22.08.2025 - 12:53