Login cu prepared statements

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

cristivstan
PHPRomania Supporter
Mesaje: 7
Membru din: Joi Noi 17, 2016 6:40 pm

Login cu prepared statements

Mesajde cristivstan » Dum Dec 03, 2017 8:41 pm

Salutare,

Lucrez la un website cu login si panou de administrare si as vrea sa stiu daca am codat corect folosind prepared statements. Mai jos este codul.

connect.php

Cod: Selectaţi tot

<?php

try {
      $conn = new PDO('mysql:host=localhost;dbname=name', 'user', '');
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   }
   catch(PDOExpetion $e) {
      echo $e->getMessage();
      die();
   }
   
<?


login.php

Cod: Selectaţi tot

<?php
ob_start();
   
   include('connect.php');

   session_start();
   
   if (isset($_POST['login_btm']))
   {
      $username = $_POST['user'];
      $pass = $_POST['pass'];
      
      $sql = "SELECT * FROM users WHERE username=:username AND pass=:pass";

          $query = $conn->prepare($sql);

          $query->execute(array(
                ':username' => $username,
                ':pass' => $pass
             ));

         $rows = $query->fetch();

         if($query->rowCount())
         {
            $_SESSION['id']=$rows['id_user'];
            $_SESSION['username']=$username;
            header('location: overview.php');
         }
         else
         {
            $_SESSION['message'] = 'Username/parola gresit/a';
            header('Location: index.php');
            exit();
         }
?>   


Exista (si) alta metoda pentru a evita SQL Injection?



nevvermind
Senior Member
Mesaje: 1241
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Login cu prepared statements

Mesajde nevvermind » Dum Dec 03, 2017 9:42 pm

Iti da eroare sau ce? Arata bine.

Si da, deocamdata prepared statements si o doza buna de scepticism in ceea ce priveste inputul primit de la user sunt cele mai bune metode.

PS: Nu mai folosi "?>" in scripturi PHP. Fac mai multe probleme decat ajuta. Scapa de ele.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

Memphistoles
New Member
Mesaje: 3
Membru din: Lun Aug 08, 2016 10:59 am

Re: Login cu prepared statements

Mesajde Memphistoles » Mar Dec 05, 2017 11:30 am

Salut,

Cateva sfaturi:

Nu stoca niciodata parola in db in felul acesta.Cripteaz-o folosind o functie de hashing.Acum ceva timp,md5/sha512 era baza plus 2 notiuni de criptografie: salt & pepper.Acum php are o functie care te rezolva: password_hash(http://php.net/manual/ro/function.password-hash.php).
O sa gasesti explicatii elaborate cum sa structurezi script-urile de register/login conform best practices,in special pe SO(https://stackoverflow.com/questions/401 ... words?rq=1) dar pe scurt,ideea e sa stochezi parola hashuita in db iar la fiecare login sa compari password_hash($user_value) cu $db_pass_value.

Un alt sfat ar fii sa pui scriptul de conectare cu db-ul, inafara zonei de acces a userului(majoritatea web serverelor au public_html care poate fii accesat direct de catre user).
O alta chestie ar fii sa accepti doar tipul de valoare pe care-l astepti dintr-un input.Ex: prin $_POST['id'] te astepti sa vina doar tipul integer si atunci filtrezi valoarea: (int)$_POST['id'] / intval($_POST['id']),etc etc

Ar fii multe alte lucruri de zis,securitatea este unul dintre cele mai importante puncte in programare,daca nu cel mai.
Documenteaza-te foarte bine inainte:) .Spor si daca ai nevoie de ajutor,private message


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 1 vizitator