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

Sécurité Discussion :

Du JSON dans les variables GET, qu'en pensez vous ?


Sujet :

Sécurité

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de Ethan 0x21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Par défaut Du JSON dans les variables GET, qu'en pensez vous ?
    Bonjour,


    Ayant à ma charge la mise en place d'un web service (API), j'utilise à l'instars de Amazon et d'autres géants du web, une authentification et contrôle d'intégrité basé sur HMAC avec SHA1, cependant au vu de la complexité à "canoniser" les données à signer (url trié par ordre alphabétique pour OAuth par exemple, etc...), sans compter les possibles erreurs liés à l'ajout de paramétres par composant ou librairie tiers...

    J'ai réfléchis à une solution (qui existe peut-être déjà mais rien trouvé a ce sujet) qui consisterai à serializer tous les paramétres GET, dans un objet JSON (à l'instars du JSON/RPC en plus soft), puis l'objet JSON serais stringifié dans une variable GET prédéfinie (admettons 'requete'), ainsi le calcul de la signature avec HMAC_SHA1 et la clée privée et accessoirement le nonce/timestamp, serais plus simple, car plus besoin de 'canonisation' lourde et contraignante de la part du serveur et du client.

    Certes le temps alloué à la canonisation des données et substituer en partie par la création et la stringification de l'objet JSON, mais sa ma l'air quand même moin source de vrai-faux positif lors du controle de la signature par le serveur.

    Pensez-vous que ce que je propose est un pure sacrillége de 'non optimisation' ou au contraire peut s'avérer utile ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Je ne vois pas l'intérêt. Tu as l'air de chercher à résoudre un problème, mais on se demande bien lequel.
    Signer des requêtes est simple et rapide.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif Avatar de Ethan 0x21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Par défaut
    Il y a en pourtant un, OAuth 1.0a, impose le respect de contraintes appliqués sur le jeux de variables à transmettre pour la signature en amont et aval pour la comparaison des deux HMAC, augmentant la probabilité de vrai faux lors du controle de la signature, les exemples sont à foisson sur la toile :

    http://developer.linkedin.com/docume...authentication
    http://oauth.net/core/1.0/
    http://c.ittoolbox.com/groups/techni...matter-3774417


    Ainsi la serialisation avec JSON va nous éviter se genre de probléme, de plus la transmission sous format JSON des variables permet de représenter des structures de données plus complexe et de façon plus simple que par le recourt à une myriade de variables GET.

    Cependant je l'accorde le seul revers de médaille est la légére augmentation de la taille des données transmises (qui n'est pas bien importante par rapport à des supports 'verbeux' tel que le XML, etc...).

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Oui je connais ces contraintes, mais tu parles d'un "problème à éviter." Lequel ? Si tu fais du OAuth, c'est pas le JSON qui va te dispenser de respecter les contraintes. Et puis de là à appeler ces contraintes un "problème"... Dans les URL aussi il y a des contraintes à respecter, ça dérange personne.

    À la rigueur "l'exemple" des données à trier, qui donc n'est pas un exemple mais la seule chose où ton JSON machin peut intervenir, ça évite de te retrouver avec un ensemble variable de noms à ordonner, et du coup t'as juste à regarder au moment où tu programmes, dans quel ordre ils vont, au lieu d'avoir un algo de tri.
    ... C'est... pas quelque chose qui viendrait à l'esprit normalement. Ça a jamais été difficile de faire ça, alors que passer par une couche de sérialisation, merci. Si les gens se plantent, c'est parce qu'ils ont pas compris que si, il faut bel et bien trier et que s'ils ont pas quelqu'un qui le fait à leur place, personne le fera. À partir du moment où tu sais qu'il faut trier, il n'y a pas de problème.



    Pour les données complexes, ben l'idée justement c'est d'arrêter les GET et se mettre au POST ou au PUT. Après c'est pas toujours possible, je suis d'accord. Un POST ou un PUT servent à envoyer des entités, or ce que tu cherches à transmettre pourrait n'être qu'un paramètre qui, aussi complexe soit-il, n'a pas lieu d'être l'entité d'une requête.

    Le prix, en fait, c'est pas juste le coût en place de l'encodage. C'est aussi que ton GET tu l'as fait à une URL, et que cette URL est incompréhensible. On peut la comprendre qu'après deux couches : une métier parce que c'est ton truc à toi, et une standard pour indenter le JSON.
    C'est pas bien élégant, pas bien prévu pour, mais bon, en effet, ça vaut pas non plus la peine de se casser la tête des heures si on a rien trouvé d'autre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [AJAX] Passer toutes les variables GET dans un appel AJAX
    Par wbulot dans le forum jQuery
    Réponses: 1
    Dernier message: 17/04/2014, 11h59
  2. text, ntext et image sont interdits dans les variables locales
    Par Sebounet19 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/07/2013, 15h44
  3. Réponses: 1
    Dernier message: 19/11/2006, 16h47
  4. L'apostrophe dans les variable !
    Par leniM dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2006, 02h04
  5. Problème d'espace dans les variables
    Par crocmorts dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2006, 15h12

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