Lorsque on développe des applications PHP avec une interface AJAX, on ne peut jamais être sûre que les requêtes reçus par le serveur proviennent de votre application et c’est requêtes peuvent être plus au moins dangereuse pour votre system.
Pour parier a ce problèmes nous allons mettre un grade-fou qui va rejeté toutes requêtes provenant d’un domaine inconnu.
La technique consiste a fixé une variable pour chaque session qui sera transmise au client lors de ça création et qui va servir d’identité pour nos requêtes, si par hasard nous recevons une requêtes n’incluant pas cette variable celle-ci sera automatiquement rejeté.
Mise en œuvre
session_start(); if (!isset($_SESSION['token'])) { $token = md5(uniqid(rand(),TRUE)); //création et cryptage de id $_SESSION['token'] = $token; // sauvgarde de id setcookie('token',$_SESSION['token'],time()+3600); //expédition de id au client }
Nous créons d’abord un index unique que nous allons crypter en MD5 ensuite nous sauvegardons celui-ci dans la variable de session $_SESSION[‘token’] et finalement nous l’expédions au client sous forme de cookies.
function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; }
readCookie est une fonction classique pour récupérer la valeur d’un cookies par son nom, vous pouvez utiliser la fonction prédéfinis de votre Framework AJAX si elle existe.
token = readCookie('token'); $.post("test.php", { token: token });
Nous envoyons notre demande au serveur avec notre id,j’ai pris comme exemple une requête post JQuery étant le Framework le plus utilisé.
if ($_POST['token'] == $_SESSION['token']) { // exécuter votre traitement }
Coté serveur nous testons la similitude de l’ID envoyé par le client et celui sauvegardé au niveau de notre serveur si c’est le cas nous pouvons exécuter tranquillement notre traitement.
Exactement ce que je cherchait \o/
RépondreSupprimerTres bon article,
RépondreSupprimerC'est juste ce dont j'avais besoin
Merci
Romain L.