Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Panel logowania, prosze konstruktywne opinie
-Gość-
post
Post #1





Goście







Witam, zrobiłem panel i jak by ktoś biegły mógł go ocenić? Pod względem bezpieczeństwa głównie, nie ma to być niewiadomo jak bezpieczny no ale żeby go banalnym sposobem nie dało sie obejść.

Mile widziane jakieś poprawki... lub chociaż wytknięte co powinienem zmienić na coś.

Będę bardzo wdzięczny.

STRONA GŁÓWNA:
Kod odpowiada za ładowanie stron ( wiem tyle że muszę w nim dodać wykasowanie znaków / \ : . )
  1. <?php
  2.  
  3.  $page = @$_GET['page'];
  4.    require('./smarty/Smarty.class.php');
  5.  
  6.        if(!isset($page))
  7.        {
  8.             $page = 'news';
  9.     }
  10.        else
  11.        {
  12.          if(!file_exists($page.".php"))
  13.          {
  14.              $page = "news";    
  15.            }
  16.            else
  17.             {
  18.                $page = $_GET['page'];
  19.            }
  20.    }
  21.      include($page.".php");
  22.      
  23. ?>


Panel includowany na stronę główną:

  1. <?php
  2.  
  3.        $tpl = new Smarty;
  4.        $tpl -> template_dir = './templates/';
  5.        $tpl -> compile_dir = './templates_c/';
  6.  
  7.        
  8.        
  9.            if (@$_SESSION['zalogowany'] === true)
  10.            {
  11.                            $tpl -> assign('info', 'jestes zalogowany');
  12.                             $tpl -> display('zalogowany.tpl');
  13.            }
  14.            else
  15.            {
  16.                 $tpl -> display('login.tpl');
  17.            }
  18.  
  19. ?>


szablon panelu login.tpl:

  1. <form action="?page=zalogowany" method=POST>
  2. <div class="login">
  3. <div class="login_1">
  4. <INPUT type="text" name="nick" class="p_user"><br />
  5. <INPUT type="password" name="pass" class="p_pass">
  6. </div>
  7. <div class="login_2">
  8. <input onfocus="blur()" type="submit" value="" class="p_but" >
  9. </div>
  10. <div id="login_3"><a href="#">Przypomnij hasło</a> | <a href="#">Rejestracja</a></div>
  11. </div>
  12. </form>


strona zalogowany.php wczytywana po uruchomieniu formularza:

  1. <?php
  2.  
  3. try {
  4.        $pdo = new PDO('mysql:host=localhost; dbname=gcms', 'root', 'root');
  5.        $pdo -> setAttribute(PDOATTR_ERRMODE, PDOERRMODE_EXCEPTION);
  6.            
  7.        
  8.            if (isset($_POST['nick'])&&isset($_POST['pass']))
  9.            {
  10.                        $zapytanie =  $pdo -> query('SELECT nick, pass FROM users WHERE nick = "'.$_POST['nick'].'"  AND  pass = "'.$_POST['pass'].'"');
  11.                        $row = $zapytanie -> fetch();
  12.                                            
  13.                            if ($row['nick'] === $_POST['nick'] && $row['pass'] === $_POST['pass'])
  14.                                {
  15.                                                                $_SESSION['zalogowany'] = true;
  16.  
  17.                                    echo "<meta http-equiv=\"Refresh\" content=\"0; url=index.php\" />";
  18.  
  19.                                
  20.                                $zapytanie -> closeCursor();
  21.                                }
  22.                                
  23.                            else
  24.                                {
  25.                                        echo "Zły login lub hasło!";
  26.                                }
  27.        
  28.            }
  29.            
  30. else
  31.                                {
  32.                                        echo "Zły login lub hasło!";
  33.            }
  34.        
  35.    
  36.    }
  37.    
  38. catch(PDOException $e)
  39.    {
  40.        echo "blad".$e->getMessage();
  41.    }
  42.    
  43.    
  44.                                
  45.                                
  46. ?>


strona wyloguj.php:

  1. <?php
  2.  
  3.    echo "<meta http-equiv=\"Refresh\" content=\"0; url=index.php\" />";
  4.                                
  5.                                
  6. ?>


Mało praktyczne jest to że stronę po zalogowaniu jak i wylogowaniu muszę odświeżyć bo inaczej nie wczytuję / kasuję się panel... ale nie miałem innego pomysłu na załatwienie tej sprawy



Jeśli ktoś znajdzie chwilkę i chęci to proszę o pomoc, bo nie mam innego sposobu na sprawdzenie bezpieczeństwa i praktyczności tego panelu
Go to the top of the page
+Quote Post
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


  1. <?php
  2. include($page.".php");
  3. ?>


A jak wywołam adres: index.php?page=../../admin/kasuj?
Oczywiście określenie pliku jest wyssane z palca, ale w takiej formie pozwalasz mi includować wszystko jak leci.

Po drugie nie opierałabym się na samej zmiennej sesyjnej, ale również na innych sprawdzeniach (sygnatura przeglądarki na przykład).

W ogóle nie widzę session_start();
Wylogowanie zrobiłabym tylko i wyłącznie po stwierdzeniu, że user jest zalogowany, w przeciwnym przypadku wyświetliłabym komunikat, że nie jest się zalogowanym. Osobiście uważam, że jest to bardziej profesjonalne, zamiast przyjmować wszystko jak leci.

To tak na szybko.
Go to the top of the page
+Quote Post

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 - 15:41