Securizare aplicatie php

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
andras
Mesaje:430

Securizare aplicatie php

Salut,
1. La logare am urmatoarea instructiune. Cit este ea de sigura? Poate intra cineva usor cu SQL Injection?

Cod: Selectaţi tot

$comandaSQL="SELECT user_id,usr,pass,tipusr,statut,activ FROM user Where usr='$user' AND pass='$pass' AND activ='ACTIV' limit 1 "; 
$rezultate = mysql_query($comandaSQL) or die(mysql_error());
2. Cum este mai bine sa protejez fisierele aplicatiei? Eu m-am gindit la 3 variante:
a. O functie PHP care detecteaza daca este deschisa o sesiune a aplicatiei. Functia o apelez in fiecare fisier PHP. Daca nu este deschisa nici o sesiune se face trimitere automata la formularul de Login.
b. Accsesul la oricare fisier PHP (mai putin cel de Login) sa se faca doar prin intermediul unui fisier de tip controler.
c. Ascunderea cu .htacces a fisierelor aplicatiei.
Eu am aplicat a. si c. Exista metode mai bune? Mentionez ca incepind cu urmatoarea aplicatie voi trece la conexiunea PDO. Multumesc.

MarPlo Mesaje:4343
Salut
Pentru protejare la SQL Injection poti folosi PDO cu prepare() si execute().
Iar pentru accesul la fisierele php, cred ca varianta cu sesiune si ascunderea cu .htaccess e suficienta.

andras Mesaje:430
Salut,
Exista o solutie simpla sa limitez la 3 numarul de tentative de logare? In formularul de Login dupa 3 (sau 4, sau 5) incercari nereusite ar trebui fie sa blochez formularul pana la inchiderea browserului, fie sa se inchida browserul, fie doar tab-ul curent din browser, fie sa faca altceva. Multumesc.

MarPlo Mesaje:4343
Se poate face cu sesiune.
In codul php unde se verifica datele de logare se inregistreaza si o sesiune, de exemplu $_SESSION['nrlogs'], initial cu valoarea 1.
La fiecare incercare de logare se verifica acea sesiune, daca nu exista se creaza cu valoarea 1, daca exista i-se incrementeaza valoarea cu o unitate, daca valoarea depaseste numarul dorit se face redirect la alta pagina.
Cam asa ceva, ca exemplu de adaptat la codul tau:

Cod: Selectaţi tot

<?php
session_start();

// daca sunt trimise date de logare
if(isset($_POST['name']) && isset($_POST['pass'])) {
  if(isset($_SESSION['nrlogs'])) $_SESSION['nrlogs']++;  // daca sesiunea exista, o incrementeaza
  else $_SESSION['nrlogs'] = 1;  // o creaza daca nu exista

  // daca sesiunea e mai mare decat 4, face redirect
  if($_SESSION['nrlogs'] > 4) {
    header('Location: alta_pagina.php');
    exit;
  }

  // restul codului tau ...
}