Cryptage et ID unique

Voici un tuto pour crypter des informations de son site et avoir des ID uniques !

Cryptage et ID unique

Voici un tuto pour crypter des informations de son site et avoir des ID uniques !

Crée le 22 nov. 2020

Aujourd'hui je vais te montrer comment crypter des infos et rendre tes id uniques

Unique ID

Pourquoi unique ID et pas Auto Increment ? Tout simplement pour une question de sécurité : Dans un cas où j'aurais un formulaire avec un input de type hidden comme ceci :

<input value="<?php echo $ligne['id_article'] ?>" type="hidden" name="idArticleEdit">

Sans unique ID, dans l'inspecteur j'ai ça :

<input value="2" type="hidden" name="idArticleEdit">

Il est facile de deviner que l'id des autres articles est donc 3, 4 etc... Dans le cas d'une modification d'article il me reste juste à mettre 4 et je pourrais modifier l'article d'une autre personne.

Avec un unique ID :

<input value="5fb57f2782884" type="hidden" name="idArticleEdit">

Il est donc impossible de deviner l'ID d'un article

La morale du truc c'est que là où il y a un id, il y a un unique ID !

Bien évidemment ça ne suffit pas, à vous de rajouter des vérifications avec l'id de l'utilisateur en session par exemple.

Bon maintenant voyons comment faire tout ça...

Dans ma requête :

$sql = "INSERT INTO articles (id_article, titre, commentaire, date, id_membre )
	VALUES (:id, :titre, :commentaire, :image, :date, :membre)";
// Préparation de la requête avec les marqueurs
$resultat = $base->prepare($sql);
$resultat->execute(array(
	'id' => uniqid(),
	'titre' => htmlspecialchars($_POST['titre'], ENT_QUOTES),
	'commentaire' => $_POST['commentaire'], ENT_QUOTES),                                
	'date' => $date,
	'membre' => $_SESSION['id'],
));

Bon comme dans le tuto précédent on fait une requête préparée MAIS avec une méthode en plus qui est :

htmlspecialchars()

Qui va nous permettre de dégager les caractères comme "<" ">" donc impossible d'injecter du script dans notre bdd.

Dans le code ci-dessus on a aussi la méthode :

uniqid()

Qui va tout simplement nous générer un id unique. Voici le résultat final en bdd : 🛑 Attention, cette fonction peux créer des ID qui se répéte... Nous te recommandons donc d'utiliser une fonction trouvable sur la documentation de PHP pour un petit site et nous te recommandons d'utiliser cette méthode pour un plus gros site. Voici un exemple d'utilisation de chacunes de ces méthodes:

$sql = "INSERT INTO articles (id_article, titre, commentaire, date, id_membre )
	VALUES (:id, :titre, :commentaire, :image, :date, :membre)";
// Préparation de la requête avec les marqueurs
$resultat = $base->prepare($sql);
$resultat->execute(array(
	'id' => uniqidReal(), // Vous devez définir la fonction vous même
	'titre' => htmlspecialchars($_POST['titre'], ENT_QUOTES),
	'commentaire' => $_POST['commentaire'], ENT_QUOTES),                                
	'date' => $date,
	'membre' => $_SESSION['id'],
));
$sql = "INSERT INTO articles (id_article, titre, commentaire, date, id_membre )
	VALUES (:id, :titre, :commentaire, :image, :date, :membre)";
// Préparation de la requête avec les marqueurs
$resultat = $base->prepare($sql);
$resultat->execute(array(
	'id' => UUID::v4(), // Vous devez définir la classe et la méthode vous même, vous pouvez également utiliser les méthodes qui se basent sur une chaîne de caractère.
	'titre' => htmlspecialchars($_POST['titre'], ENT_QUOTES),
	'commentaire' => $_POST['commentaire'], ENT_QUOTES),                                
	'date' => $date,
	'membre' => $_SESSION['id'],
));

2. Le Cryptage

Envie de lire la suite de ce tutoriel ?

Connecte-toi dès maintenant, et accède entièrement à tous les tutoriels de GCA !

#PHP

#Sécurité

Écrit par LocDog#0101

6

Sommaire