Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP]czy takie logowanie jest bezpieczne?, czy takie logowanie jest bezpieczne?
rivesca
post 19.10.2016, 17:21:02
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.10.2016

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


Witam, napisałem taki o to kod i nie wiem czy jest bezpieczny. do pliku login.php leci postem login i haslo z formularza, następnie sprawdza czy istnieje takie w bazie jeżeli tak to tworzy sesje o nazwie admin $_SESSION['admin'] = true; następnie by coś robić w pliku admin.php trzeba mieć tą sesje jeżeli ona nie istnieje to przerzuca na login.html


  1. // Plik konfiguracyjny
  2. <?php
  3. class base {
  4. protected $host="localhost";
  5. protected $db="base";
  6. protected $user="root";
  7. protected $pass="root";
  8. protected $connect;
  9.  
  10. public function __construct() {
  11. $this->connect = new PDO("mysql:host=".$this->host.";dbname=".$this->db,$this->user,$this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
  12. }
  13. }
  14.  
  15. $base = new base;
  16. ?>





  1. // Plik logowania
  2. <?php
  3. class login extends base{
  4. function access(){
  5.  
  6. $this->login = htmlentities($_POST['login']);
  7. $this->password = htmlentities($_POST['password']);
  8.  
  9. $login = $this->connect->prepare('SELECT * FROM user WHERE login=:login AND password=:password');
  10. $login->bindParam(':login', $this->login);
  11. $login->bindParam(':password', MD5($this->password));
  12. $login->execute();
  13. $rows = $login->rowCount();
  14. $dane = $login->fetch();
  15.  
  16. if($rows == 1){
  17. $_SESSION['admin'] = true;
  18. header('Location: admin.php');
  19. }else{ $_SESSION['wrong'] = true; exit(); login(); }
  20.  
  21. }
  22. }
  23. $login = new login;
  24. $login->access();
  25. ?>





  1. //Plik dostępu
  2. <?php
  3. if(!isset($_SESSION['admin'])){ header('Location login.html'); exit(); }
  4. ?>
Go to the top of the page
+Quote Post
Lion
post 19.10.2016, 17:36:17
Post #2





Grupa: Zarejestrowani
Postów: 148
Pomógł: 14
Dołączył: 23.02.2013

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


Wykorzystanie PDO i prepared statements to dobry kierunek. Możesz dane z formularza przefiltrować przy pomocy input_filter i podobnych wbudowanych w PHP funkcji. Aby kod był bardziej OOP można by zrobić wstrzykiwanie wrappera PDO do klasy obsługującej logowanie, w ten sposób przyszłości łatwiej będzie Ci to rozbudowywać i testować ten kod.


--------------------
Go to the top of the page
+Quote Post
JanuszPHP
post 20.10.2016, 03:14:44
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 2
Dołączył: 10.08.2015

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


to niepotrzebne:
  1. $base = new base;

a to nielogiczne:
  1. class login extends base

właśnie tego tyczyła się rada Liona
Cytat(Lion @ 19.10.2016, 18:36:17 ) *
(...) Aby kod był bardziej OOP można by zrobić wstrzykiwanie wrappera PDO do klasy obsługującej logowanie, w ten sposób przyszłości łatwiej będzie Ci to rozbudowywać i testować ten kod.

Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 24.04.2024 - 03:42