Bonjour,

Je reviens avec ma page qui me permet de modifier les informations d'une BDD.
Actuellement j'affiche tous les résultats dans un tableau et en cliquant sur l'icône modifier cela me lance un script popupmodifier qui luit m'affiche un pop-up avec un formulaire préremplit avec les informations de la BDD

<IMG class="icone" title="icone pour modifier" src="images/crayon.png" alt="icone pour modifier" onclick ="popupmodifier(\''.$id.'\', \''.$titre.'\', \''.$description.'\')"/>

Cela marche mais quand j'inspecte la page avec un navigateur je peux modifier par exemple la variable id ce qui représente une faille de sécurité.

Je voulais savoir s'il possible de la caché ou de la transmettre d'une autre façon plus sécurisé

Merci d'avance de votre aide

3 réponses


quenti77
Réponse acceptée

Hello,

La façon de sécuriser est de vérifier ce que tu reçois.

Si l'id que tu as n'est pas éditable par la personne actuellement connecté, tu l'expulse avant.

Si je prends un exemple, L'édition d'un message du forum par exemple. Je regarde comment de mon côté l'édition marche avec un message que j'ai écris.
On peut y voir qu'il transmet l'id dans l'url. Pourtant si j'essaye de lancer la même requête sur un message différent et pas à moi, j'ai bien une erreur 403 pour dire que je n'ai pas le droit.

Donc la sécurité c'est de vérifier les données que tu as

popotte
Réponse acceptée

Hello, alors il faut que tu utilises un hash pour authentifier tes variables

Coté serveur (php) tu va retourner ces variables:

$variable1 = '';
$variable2 = '';
$variable3 = '';
$token = hash('sha256', [$variable1, $variable2, $variable3, 'salt']); // Ca permetra d'authentifier tes variables, remplaces salt par rand(1, 99999)

Ensuite tu passes par le JS et la faille de sécurité est présente si tu contactes le serveur via JS, et bien tu a juste à vérifier le hash des variables envoyées et le comparer avec ton $token, si la variable a été modifiée alors le hash sera différent

Pour améliorer la sécurité tu peux même crypter tes données:

$res = gnupg_init();
gnupg_addencryptkey($res, "TA CLÉ GPG"); // Fou ta clé GPG en variable d'environnement pour quelle reste planquée
$variable1 = '';
$variable1 = gnupg_encrypt($res, $variable1);
$variable2 = '';
$variable2 = gnupg_encrypt($res, $variable2);
$variable3 = '';
$variable3 = gnupg_encrypt($res, $variable2);

$token = hash('sha256', [$variable1, $variable2, $variable3, 'salt']);

Et coté JS faudra utiliser un paquet pour décrypter, et faudra aussi utiliser le paquet dotenv pour récupérer la clé

Mais juste le coup du token c'est suffisant

tom256
Auteur

Merci pour cette réponse rapide et complète je vais faire ça