Sécurité de transmission par $_SESSION

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Sécurité de transmission par $_SESSION

Re: Sécurité de transmission par $_SESSION

par AB » 04 févr. 2011, 17:52

Oui tu n'a qu'à suivre le conseil de moogli et tu n'auras plus ce problème car comme l'a fait remarquer xTG c'est dû au choix de la méthode que tu utilise pour transmettre tes variables et non pas du fait de l'utilisation des sessions.

A propos des sessions il faut éviter que l'identifiant de session passe dans l'url.

On peut essayer de mettre la mention "php_flag session.use_trans_sid off" dans un .htaccess à la racine du site.

Si pas possible (sur les mutualisés) reste la solution de vérifier que le navigateur client accepte les cookie et sinon envoyer éventuellement un message d'avertissement...

Re: Sécurité de transmission par $_SESSION

par moogli » 04 févr. 2011, 16:12

pour compléter, je dirais d'utiliser un formulaire en POST si tu souhaite que cela soit p lus "transparent" pour le navigateur, il te faudra gérer le fait qu'il ne faut pas prendre en compte un "refresh" de la page qui poste la quantité :)


@+

Re: Sécurité de transmission par $_SESSION

par xTG » 04 févr. 2011, 16:06

Le soucis de sécurité que tu présentes ne provient en aucun cas d'un soucis de session mais de passage de variable par méthode GET. ;)

Sécurité de transmission par $_SESSION

par jacfev » 04 févr. 2011, 15:57

Bonjour,

Suite à un précédent post, une recommandation m'était faite de transmettre les variables par la superglobale $_SESSION, mais celle-ci peut être modifiée facilement dans l'url.
Bon ce n'est sûrement pas un scoop pour certains d'entre vous.

Demo :

issu de CÉCILE ODERO et MAGALI CONTENSIN (PHP Solutions)

Dans page1.php

session_start();
// recuperer le parametre passé dans l'URL
$nb = isset($_GET['nb']) ? (int)$_GET['nb'] : 0;
// stocker les donnees dans des variables de session
$_SESSION['quantite'] = $nb;
$_SESSION['ref'] = 'A-06-18';


Dans page2.php

session_start();
// afficher les variables de session
foreach ($_SESSION as $cle=>$valeur) {
echo "Variable de session $cle, contenu = $valeur<br>";
}


Si le script page1.php est modifié dans l'url :
?nb=12

Cela affecte le contenu de la variable quantite.
Ce n'est pas beaucoup plus sûr que de transmettre par $_GET.

Comment y remédier alors ?

Cordialement
Jacques.