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

Symfony PHP Discussion :

Encoder/crypter variables Get et Post [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Encoder/crypter variables Get et Post
    Bonjour,

    Dans l'application que je développe des utilisateurs se connectent et peuvent visualiser leurs informations. L'url de la page de visualisation est du type :
    www.monsite.fr/visualisationEntite?id=12
    et pour l'instant si un utilisateur change simplement l'id il tombe sur un autre enregistrement pouvant appartenir à un autre utilisateur.

    Je pensais pour empêcher les utilisateurs de s'amuser avec ça d'encoder ou crypter (je ne fais pas bien la nuance entre ces deux notions) l'identifiant, tant pour les variables GET que pour les variables POST.

    Pensez-vous que cette méthode soit la bonne ?
    Si oui quelles fonctions php sont à utiliser ? Je me perds un peu entre les hash, crypt, mcrypt_generic, etc.

    Existe-t-il des méthodes fournies par Symfony2 pour résoudre mon problème ?

    Merci

  2. #2
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Points : 157
    Points
    157
    Par défaut
    Tout simplement une requête pour vérifier s'il y a bien relation entre les deux entités non?
    Enfin c'est ce que je ferais personnellement mais les différentes solutions m'intéressent aussi vu que je devrais rencontrer la même problématique bientôt.

  3. #3
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    tu peux chiffrer l'id mais (personnellement je ferrai plutôt le mail) en sha1 ou md5, c'est une bonne manière de procéder. Dans ton appli tu fais une recherche sur les valeurs chiffrées.

    Je ne pense pas qu'il y ait d'outils pour ça dans SF2 car c'est des fonctions de base de php, après rien ne t'empêche d'aller voir sur knp bundle.

    Olivier

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    @KzrData
    Oui je pense que je vais faire ce que tu proposes et tester si mon utilisateur est bien lié à l'entité visualisé.

    @bilbot
    (personnellement je ferrai plutôt le mail)
    Je n'ai pas compris ce que tu voulais dire par là.

    Sinon si je crypte en md5 mes variables get je ne peux pas les récupérer directement puisqu'il n'y a pas de fonction pour décoder le md5. Je suis donc obliger de passer par une boucle sur mes entités pour savoir à quel id cela correspond ? N'est-ce pas un peu lourd ? Est-ce qu'il ne vaut pas mieux utiliser des fonctions crypter et decrypter comme dans ce fil ? http://www.developpez.net/forums/d64...frer-variable/

    Sinon par rapport au bundle Symfony2 j'ai trouvé celui-ci mais je n'ai pas encore regardé s'il correspondait à ce que je cherche :
    http://knpbundles.com/pierrre/PierrreEncrypterBundle

  5. #5
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par PongChess Voir le message
    @KzrData
    Oui je pense que je vais faire ce que tu proposes et tester si mon utilisateur est bien lié à l'entité visualisé.

    @bilbot

    Je n'ai pas compris ce que tu voulais dire par là.

    Sinon si je crypte en md5 mes variables get je ne peux pas les récupérer directement puisqu'il n'y a pas de fonction pour décoder le md5. Je suis donc obliger de passer par une boucle sur mes entités pour savoir à quel id cela correspond ? N'est-ce pas un peu lourd ? Est-ce qu'il ne vaut pas mieux utiliser des fonctions crypter et decrypter comme dans ce fil ? http://www.developpez.net/forums/d64...frer-variable/

    Sinon par rapport au bundle Symfony2 j'ai trouvé celui-ci mais je n'ai pas encore regardé s'il correspondait à ce que je cherche :
    http://knpbundles.com/pierrre/PierrreEncrypterBundle
    Je ne vois pas trop comment ta réponse va changer le problème Kzt....


    Quand je dis utiliser plutôt me mail, je veux dire qu'au lieu de passer l'id en paramètre, tu passes le mail de la personne (ou tu chiffre le mail de la personne) ca sera beaucoup plus difficile de tomber sur un mail qui est effectivement dans ta base.

    Pour le reste tu n'es pas obligé boucler sur tous tes contact. Tu fais la comparaison directement dans ta rquête SQL (ca ira bien plus vite) ou alors tu as un champs dans ta base qui contient la valeur chiffrée.

  6. #6
    Membre habitué
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mai 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2011
    Messages : 122
    Points : 169
    Points
    169
    Par défaut
    Bonsoir,

    Pourquoi aller chercher autant de complication ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if($id !== $this->container->get('security.context')->getToken()->getUser() {
        // Je renvoie vers l'accueil du site 
        // et pourquoi pas, je me fais un fichier de log pour récupérer les infos sur le petit malin qui essaie de truquer les url, au cas où...
    }
     
    // Mon code action...
    N'est-ce pas suffisant ?

  7. #7
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par Francesco34 Voir le message
    Bonsoir,

    Pourquoi aller chercher autant de complication ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if($id !== $this->container->get('security.context')->getToken()->getUser() {
        // Je renvoie vers l'accueil du site 
        // et pourquoi pas, je me fais un fichier de log pour récupérer les infos sur le petit malin qui essaie de truquer les url, au cas où...
    }
     
    // Mon code action...
    N'est-ce pas suffisant ?
    ptet parce qu'une réponse aussi simple ne répond pas à la question posée

    Une autre solution serait de forcer la personne à se logguer avant d'accéder aux données

  8. #8
    Membre habitué
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mai 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2011
    Messages : 122
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par PongChess Voir le message
    Bonjour,

    Dans l'application que je développe des utilisateurs se connectent et peuvent visualiser leurs informations.
    P'tet que ma réponse est aussi simple parce que j'ai lu la question

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    bof, token;

    1 ) la personne rentre un login et mdp ( ou un lien qui a un token )
    2 ) création dans la bdd d'une ligne active pour l'identifiant ( Login + mdp ) , avec une colonne qui contient le timestamp, plus un id unique, et créer un idSession qui contient cet idUnique
    3 ) sur chaque page, vérifié , que la personne a une session avec idSession, valable dans le temps

    tu peu, mettre des cookies, pour aller plus loin... etc
    mais déja deux trois mot clés, sujet largement traité.....
    Conception / Dev

  10. #10
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par Francesco34 Voir le message
    P'tet que ma réponse est aussi simple parce que j'ai lu la question
    héhé effectivement , j'avais pas compris comme ça, je pensais qu'ils arrivaient via un lien dans un mail...

    Donc au final s'est beaucoup plus simple suffit de faire en sorte que toutes les requêtes soient paramétrées suivant le user connectée, ainsi tu "cloisonnes" les résultats.

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Oui c'est vrai en fait la solution est assez simple :
    M'assurer que mes requêtes prennent en compte l'id de l'utilisateur, comme ça un utilisateur ne peut voir que ses données.
    Ça ne répond pas tout à fait à la question initiale mais ça résout mon problème.

    Par contre mes id seront toujours en clair dans mes urls (ce qui n'est plus si grave).

    Merci bien pour votre aide.

  12. #12
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par PongChess Voir le message
    Oui c'est vrai en fait la solution est assez simple :
    M'assurer que mes requêtes prennent en compte l'id de l'utilisateur, comme ça un utilisateur ne peut voir que ses données.
    Ça ne répond pas tout à fait à la question initiale mais ça résout mon problème.

    Par contre mes id seront toujours en clair dans mes urls (ce qui n'est plus si grave).

    Merci bien pour votre aide.
    Non ce n'est pas forcement grave, tu peux aussi les passer en POST, ou ne pas les passer, si c'est l'id user tu peux directement le récupérer dans controller et tu n'est donc pas obligé de le passer en paramètre.

  13. #13
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Je vais en effet les "cacher" en les passant en POST, mais bon elles restent quand même facilement accessibles avec firebug... Mais déjà la tentation de modifier une valeur pour voir ce que ça fait est moins grande puisque ces id sont moins visibles.

  14. #14
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Points : 157
    Points
    157
    Par défaut
    Citation Envoyé par bilbot Voir le message
    héhé effectivement , j'avais pas compris comme ça, je pensais qu'ils arrivaient via un lien dans un mail...

    Donc au final s'est beaucoup plus simple suffit de faire en sorte que toutes les requêtes soient paramétrées suivant le user connectée, ainsi tu "cloisonnes" les résultats.
    Donc au final, je répondais bien à la question.
    Un bon cloisonnement des requêtes , ce qui n'est pas bien complexe ici, remplace pour moi un simple obscurantisme de la session.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Initialiser un slider depuis une variable GET ou POST
    Par baneagle dans le forum jQuery
    Réponses: 1
    Dernier message: 17/09/2011, 04h52
  2. Fichier AS et variable GET ou POST
    Par tutomania dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 07/10/2009, 16h51
  3. Passage de variable GET via formulaire POST ?
    Par tintin72 dans le forum Langage
    Réponses: 4
    Dernier message: 25/07/2007, 17h51
  4. Variables GET et POST
    Par err747 dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 08/06/2007, 14h55
  5. Récupération de variable par GET et POST
    Par Sophy75 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2006, 14h35

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