Prevenire SQL Injection cu Prepared Statements

Aici vorbim despre CSS, PHP, C++, MySql, Javascript, Java & jQuery.
Post Reply
JustMike
Membru
Posts: 22
Joined: 19 Nov 2014, 21:26
Nume Real: Mihai
Nivel cunoştinţe IT: 10

20 Nov 2014, 14:51

Ok, in acest articol am sa va arat cum sa prevenim bine cunoscuta metoda de atac (SQL Injection) asupra unui website cu Prepared Statements.

Conexiunea la baza de date

Code: Select all

$mysqli = new mysqli("HOST", "USER", "PASS", "DB");
Sanitizing pentru id-ul preluat din GET, presupunand ca trebuie sa extragem din baza de date informatii folosindu-ne de un ID

-Aici puteam folosi mai multe metode:
$id = (int)$_GET['id']; //daca id-ul trabuia sa fie neaparat INT
puteam cu un if de forma if( is_numeric($_GET['id']) ){ ... } si asa mai departe

Code: Select all

$id = mysqli_real_escape_string($mysqli, $_GET['id']);
-"prepararea" query-ul in sine

Code: Select all

$query = $mysqli->prepare("SELECT * FROM `TABLE` WHERE `id`= ?");
-Setarea parametrilor

Code: Select all

$query->bind_param('i',$id); // am presupus ca valoarea $id-ului este Integer.
-executarea query-ului

Code: Select all

$query->execute();
-Preluarea datelor de tip RESOURCE

Code: Select all

$result = $query->get_result();
-Si evident folosirea datelor

Code: Select all

if($result) {
   $row = $result->fetch_assoc();
} 
Codul complet, fara intreruperi pe PasteBin: http://pastebin.com/CAarYcRU
Best Movies Community : Recomanda-Film!
Post Reply

Return to “CSS, PHP, C++, MySql, Javascript, Java & jQuery”