par
jp.bond » 03 mai 2019, 18:49
Bonjour,
j'ai lu des articles sur le fait qu'il fallait sécuriser ses requetes, et que PDO avec prepare() permettait de renforcer la sécurité.
J'ai un petit bout de code pour exemple :
Code : Tout sélectionner
// je récupère mon id passé dans la page par : http://www.monsite.fr/projet-details.php?id=12
$id = $_GET['id'];
$sql_produits = "SELECT * FROM produits WHERE id=:id";
$req_produits = $pdo->prepare($sql_produits);
$req_produits->bindParam(':id', $id, PDO::PARAM_INT);
$req_produits->execute();
$enr_produits = $req_produits->fetch();
Ma question :
si j'ai fait :
Code : Tout sélectionner
// en passant ce paramêtre je pense que j'ai protégé le fait qu'un petit malin passe autre chose qu'un entier dans la var $id
$req_produits->bindParam(':id', $id, PDO::PARAM_INT);
est ce que c'est juste ?
Et si oui, quand je teste par exemple id=toto, je n'ai pas de message d'erreur... est ce normal ?
Est ce qu'il serait préférable d'ajouter quand même dès le départ quelque chose comme :
voire
ou tout ceci fait doublon ?
merci de votre aide
Bonjour,
j'ai lu des articles sur le fait qu'il fallait sécuriser ses requetes, et que PDO avec prepare() permettait de renforcer la sécurité.
J'ai un petit bout de code pour exemple :
[code]
// je récupère mon id passé dans la page par : http://www.monsite.fr/projet-details.php?id=12
$id = $_GET['id'];
$sql_produits = "SELECT * FROM produits WHERE id=:id";
$req_produits = $pdo->prepare($sql_produits);
$req_produits->bindParam(':id', $id, PDO::PARAM_INT);
$req_produits->execute();
$enr_produits = $req_produits->fetch();
[/code]
Ma question :
si j'ai fait :
[code]
// en passant ce paramêtre je pense que j'ai protégé le fait qu'un petit malin passe autre chose qu'un entier dans la var $id
$req_produits->bindParam(':id', $id, PDO::PARAM_INT);
[/code]
est ce que c'est juste ?
Et si oui, quand je teste par exemple id=toto, je n'ai pas de message d'erreur... est ce normal ?
Est ce qu'il serait préférable d'ajouter quand même dès le départ quelque chose comme :
[code]
$id = htmlspecialchars($id);
[/code]
voire
[code]
if (!is_int ($id)) echo 'Erreur';
[/code]
ou tout ceci fait doublon ?
merci de votre aide