Comment bien sécuriser la fonction $_GET ?

[Résolu/Fermé]
Signaler
Messages postés
42
Date d'inscription
samedi 7 mars 2015
Statut
Membre
Dernière intervention
8 avril 2015
-
Messages postés
2708
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
20 avril 2016
-
Bonjour,
Je travaille actuellement sur une petite messagerie en php
il y'a donc une icone tout à gauche du message pour le lire et une icone a droite pour supprimer les message (sur chaque message).
Je voudrais utiliser la fonction $_GET pour la lecture et la suppresion.
Malgré mes nombreuses recherche qui à chaque fois sont différente je cherche à faire une fonction par exemple si il veut lire le message ca sera: http://www.site.com/messagerie/index.php?message=3

Je sais faire la fonction pour qu'il selectionne dans la BDD l'id du message 3
mais comment bien le sécuriser ?

- Contre les injections SQL
- Contre les modifications de l'URL ( qu'il puisse pas lire le message de quelqu'un d'autre en modifiant l'url en changeant le 3 pour un 10 par exemple ? )

J'espère avoir été clair n'hésiter pas à me demander pour plus d'infos.

Merci d'avance pour vos réponses!

1 réponse

Messages postés
2708
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
20 avril 2016
937
Salut,

Pour les injections SQL : http://openclassrooms.com/courses/eviter-les-injections-sql

Pour la modification d'URL : https://openclassrooms.com/forum/sujet/probleme-get-empecher-une-modification-url-32275
Messages postés
2708
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
20 avril 2016
937
C'est bien quand tu sais pas codé en objet, sinon PDO gagne largement le match (vu que c'est unique de l'orienté objet) :

https://code.tutsplus.com/tutorials/pdo-vs-mysqli-which-should-you-use--net-24059

Et vu que l'OO c'est l'avenir, vaut mieux s'y mettre tout de suite.
Messages postés
42
Date d'inscription
samedi 7 mars 2015
Statut
Membre
Dernière intervention
8 avril 2015

Mouais, mais quand tu as toujours codé en mysql/mysqli c'est carrément autre chose!
Messages postés
2708
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
20 avril 2016
937 >
Messages postés
42
Date d'inscription
samedi 7 mars 2015
Statut
Membre
Dernière intervention
8 avril 2015

Le mysqli peut être codé aussi en orienté objet, mais c'est sur que si tu est habitué au procédural ça change pas mal, c'est un petit temps d'apprentissage mais c'est vachement plus rapide et pratique après une fois que tu est dedans et que tu as compris le truc.
Messages postés
42
Date d'inscription
samedi 7 mars 2015
Statut
Membre
Dernière intervention
8 avril 2015

Bon bah je regarderais à l'occasion merci du conseil !
Bon revenons à nos moutons ! voici le code que j'ai utiliser:

$sql = 'select * from messagerie where destinataire = "'.$_SESSION['user'].'" ORDER BY idme DESC';
$req = mysqli_query($sters,$sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error($sters));;



$lecturemessage = $data['idme']; ( l'id du message dans la BDD)


if(isset($_GET['effacermessage']) && $_GET['effacermessage'] == $lecturemessage)
{
$sql1111 = "DELETE FROM messagerie WHERE idme =" .$_GET['effacermessage']."";
    mysqli_query($sters, $sql1111);
   

 $_SESSION['info'] = "Le message a été supprimer!";
 
	echo('<meta http-equiv="refresh" content="0;URL=../boite">');

	include_once('../bas.php');

return FALSE;
}
else
{
	$_SESSION['info'] = "Impossible de supprimer ce message ...";
 
	echo('<meta http-equiv="refresh" content="0;URL=../boite">');

	include_once('../bas.php');

return FALSE;
}


Alors la ca fonctionne donc si il veut supprimer un message en cliquant sur le l'icone ca le supprime, en revanche si il modifie l'url et change le '?supprimer=2' en un autre id d'un membre ca ne fonctionne pas! Je précise que il sélectionne les message exclusivement destiné au membre connecté sur sa messagerie!

Qu'en pense tu ?
Messages postés
2708
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
20 avril 2016
937 >
Messages postés
42
Date d'inscription
samedi 7 mars 2015
Statut
Membre
Dernière intervention
8 avril 2015

Je suppose que tu as un système de modération ou ce genre de chose ?

Normalement c'est plus possible avec les sessions puisque chaque visiteur a une sessions unique il pourra toujours changer la valeur ça devrait lui afficher ton else.