IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] mettre les variables du formulaire en une fois dans une session


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2005
    Messages : 189
    Points : 57
    Points
    57
    Par défaut [Sécurité] mettre les variables du formulaire en une fois dans une session
    Bonjour,

    j'ai une question, j'ai un formulaire avec pas mal de variable, j'aimerai bien mettre tout dans une session en une fois, et pas faire chaque fois

    $_SESSION['nomva']=$_POST['nomva'];

    est ce qu'il est possible de mettre tt dans une session en une fois, et par la suite les extraires, si oui, comment??

    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    hum, soit la question est très simple, soit je n'ai rien compris à ta question.

    Si c'est très simple, il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $_SESSION['nomva1']=$_POST['nomva1'];
    $_SESSION['nomva2']=$_POST['nomva2'];
    $_SESSION['nomva3']=$_POST['nomva3'];
    $_SESSION['nomva4']=$_POST['nomva4'];
    Tu crées une variable de session pour chaque champ de formulaire qui porte un attribut "name" différent.

    Ou alors y'a des histoires de tableau aussi je crois, mais là je ne les ai jamais utilisé. En tout cas je ne vois pas comment tu pourrais faire tenir plusieur variables issues de différents champs de formulaire dans une seule et même variable de session (si ce n'est peut être les tableaux, encore une fois).
    C'est pas parce que j'ai tort que vous avez raison.

  3. #3
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : janvier 2003
    Messages : 6 045
    Points : 8 337
    Points
    8 337
    Par défaut
    encore plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['_post_data'] = $_POST;
    si tu veux vraiment mettre toutes les valeurs de $_POST directement dans $_SESSION (ATTENTION SECURITE !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($_POST as $k => $v) $_SESSION[$k] = $v;
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  4. #4
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 413
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par Swoög
    si tu veux vraiment mettre toutes les valeurs de $_POST directement dans $_SESSION (ATTENTION SECURITE !) :
    Salut,
    A quoi fais-tu allusion pour la securité ?

    Merci

    ++
    ShinJava

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : janvier 2003
    Messages : 6 045
    Points : 8 337
    Points
    8 337
    Par défaut
    ok, mettons tu utilises les sessions pour identifier tes membres

    supposons que l'id de membre 1 est l'id de l'admin (c'est très facile à retrouver sur un site en général ^^)

    maintenant, quelqu'un envoie une requête telle que extrêmement facile à faire, exemple de requête HTTP le permettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    POST /page_de_traitement.php?SID=MONSID HTTP/1.1
    Host: www.lesite.com
    User-agent: MON_USER_AGENT
     
    id=1
    et là déjà j'ai supposé que tes sessions étaient un peu sécurisées (vérification du User-agent), il suffit d'avoir telnet pour pouvoir faire cela...

    quand tu feras le foreach, $_SESSION['id'] passera à 1 et la prochaine fois que les accès seront vérifiés pour cet utilisateur, il acquiererat automatiquement les droits admin sur ton site... Super sympa hein
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 413
    Points : 352
    Points
    352
    Par défaut
    Houla,
    Je t'avouerais que je suis un peu perdu là. Je pensais que la faiblesse des FORM était surtout dû à la méthode GET.

    Et effectivement j'utilise bien les session pour identifier un membre.
    Je compare le pseudo + mot de passe à la BDD : si c'est ok je verifie sur chaque page de son compte si $_SESSION['AuthF'] est à 1 et $_SESSION['Pseudo'] est vrai. Je vois vraiment pas comment je pourrais faire autrement.

    POST /page_de_traitement.php?SID=MONSID HTTP/1.1
    Host: www.lesite.com
    User-agent: MON_USER_AGENT

    id=1
    Alors la je comprend pas trop, ce n'est pas un GET la premiere ligne ?
    Je n'avais jamais entendu parler de securisation de $_SESSION par User-agent (va falloir que j'entame des recherche ^^)

    Merci d'avance

    ++
    ShinJava

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : janvier 2003
    Messages : 6 045
    Points : 8 337
    Points
    8 337
    Par défaut
    là, je parlais d'un formulaire classique, hors identification, un formulaire en POST est plus sécurisé qu'un formulaire en GET, vis-à-vis d'un néophyte en tous cas...

    considère simplement que TOUT ce qui vient du client est potentiellement corrompu...

    ensuite, ça dépend comment tu gères l'identification...

    Ce que je voulais dire, c'est que c'est dangereux de stocker n'importe quoi dans les sessions (avec le foreach, c'est ce qu'il se passe), c'est pas pareil pour les données pré-vérifiées (cas de l'identification).

    pour la protection par User-agent, il s'agit juste de stocker le user_agent ($_SERVER['HTTP_USER_AGENT']) dans la session à la première connection, puis de le vérifier sur chaque page, s'il change, on vire la session... ça évite en partie les vols de sessions... le User-agent c'est la signature du navigateur en fait...
    on peut faire pareil avec l'ip ($_SERVER['REMOTE_ADDR']) bien sûr aucun moyen n'est totalement sûr, il est possible plus ou moins facilement de falsifier son User-agent et son IP, et puis il est aussi possible que le client change d'IP en naviguant sur le site...

    sinon, si tu soumets ton formulaire en POST, la requête HTTP est bonne

    on peut sans problème intégrer des variables d'URL dans une requête POST... parce que ça fait partie du nom de la page à charger ^^ (suffit de lire une petite RFC du protocole HTTP pour t'en convaincre )
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  8. #8
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 413
    Points : 352
    Points
    352
    Par défaut
    D'accord je comprend mieux.
    Merci pour cette explication, j'ai apris pas mal de chose

    Merci encore et bonne journée

    ++
    ShinJava

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 18h37
  2. Réponses: 2
    Dernier message: 24/02/2009, 18h40
  3. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 15h23
  4. Réponses: 2
    Dernier message: 18/05/2006, 16h28
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo