[RESOLU] Sécurisé contre injection sql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Sécurisé contre injection sql

Re: Sécurisé contre injection sql

par @rthur » 26 mars 2018, 02:04

Tu peux aussi utiliser les requêtes préparées pour injecter des variables dans tes requêtes c'est encore + propre :
https://openclassrooms.com/courses/pdo- ... frequentes

Re: Sécurisé contre injection sql

par Spols » 24 mars 2018, 15:03

Ce lien te sera très utile

https://openclassrooms.com/courses/evit ... ctions-sql

en gros un mysql_real_escape_string devant toutes tes variables _GET fera des miracles

Sécurisé contre injection sql

par yoann38 » 23 mars 2018, 20:07

Bonjour,
Voilà je cherche à sécurisé mes requetes car je pense avoir des problème d'injection sql.

Je vous montre une de mes requetes car elle sont toute basé sur le même shéma, que puis je faire de mieux coté sécurité svp.

Connection à la base via un include :
<?php
	mb_internal_encoding('UTF-8');
	// Configuration locale
	if(strstr($_SERVER['HTTP_HOST'], '127.0.0.1')) {

		// Connexion à la base
		try
		{
				$bdd = new PDO('mysql:host=127.0.0.1;dbname=mabase', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
				$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
				$bdd->exec('SET NAMES utf8');
		}
		 
		catch(PDOException $e)
		{
				exit($e->getMessage());
				die();
		}


	} else {
		
		// Connexion à la base
		try
		{
				$bdd = new PDO('mysql:host=*****;dbname=mabase', '****', 'mdp') or die(print_r($bdd->errorInfo()));
				$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
				$bdd->exec('SET NAMES utf8'); 
		}
		 
		catch(PDOException $e)
		{
				exit($e->getMessage());
				die();
		}
	}
	

?>
Coté code une de mes requetes :
$sql = 'SELECT * FROM `loisirs`  JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs.date_fin_sortie > NOW() AND loisirs.valide = 1';
	 
	if (!empty($_GET['region'])) {
		$sql .= ' AND regions.url = \''.$_GET['region'].'\'';
	}
	if (!empty($_GET['departement'])) {
		$sql .= ' AND loisirs.id_departements = '.$_GET['departement'];
	}
	if (!empty($_GET['loisir']) ) {
		$sql .= ' AND loisirs.genre_loisir = \''.$_GET['loisir'].'\'';
	}
	if (!empty($_GET['ville'])) {
		$sql .= ' AND loisirs.city = \''. getRealValue($_GET['ville']). '\'';
	}

	$req = $bdd->query($sql);
	$nb = $req->rowCount();

      while($ligne = $req->fetch(PDO::FETCH_ASSOC)){  
  // J'affiché mes données
}