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

AJAX Discussion :

[AJAX] xhr_object / protéger réception de l'objet (sécurité)


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Par défaut [AJAX] xhr_object / protéger réception de l'objet (sécurité)
    Bonjour à tous, je suis confronté à un (énorme) problème et vous remercie de porter de l'attention à ces quelques lignes.


    #Explication compliquée

    La situation : Lors d'un click sur un lien, j'appel une fonction JavaScript qui envoie un objet en post à une page php.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     xhr_object.open("post", "gg.php", true); 
    ...
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");			
    xhr_object.send("id=un-id");
    Le problème : Une requête sql s'effectue dans la page appelée, en fonction des paramètres envoyés. N'importe quel utilisateur malveillant peut donc reproduire le click, en passant par les headers HTTP.

    La solution ? En déclarant une variable dans la page où les liens sont effectués, en vérifiant si elle existe dans la page appelée. (avoir un élément à contrôler et qui ne vienne pas du javascript accessible à tous)

    Le problème de cette solution : Mon objet (xhr) inséré ne peut détecter la présence des variables déclarées dans la page.

    L'objectif : trouver une autre solution... Pour 100 sous !

    #Explication simple

    Lors d'un click sur un lien, j'aimerai charger une requête php qui incrémente un nombre en bdd. la page ne doit pas se recharger, J'appelle donc à chaque click la page. Comment faire passer une variable à cette page sans lui envoyer par javascript?

    Merci d'avance, même une piste serait la bienvenue...

  2. #2
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Pourquoi ne pas simplement vérifier que la personne qui fait la requete a bien une session démarrée?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Par défaut
    Le problème, même en faisant cette vérif, c'est que l'utilisateur peut appeler la fonction javascript depuis le browser et ne pas faire l'action qui doit déclencher la fonction

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    N'importe quel utilisateur malveillant peut donc reproduire le click, en passant par les headers HTTP.
    A mon avis il y a deux cas distincts.
    Soit quelqu'un ne s'est pas authentifié et essaie de "reproduire le click, en passant par les headers HTTP", et dans ce cas comme le dit DoubleU, la personne n'a pas de session démarrée (avec l'existence d'une variable de session type "user" par exemple) => tu peux donc interdire la requête
    Soit quelqu'un s'est authentifié et essaie de "reproduire le click, en passant par les headers HTTP", et là cela se complique, car on ne peut effectivement plus l'empêcher de simuler un clic et donc de fausser tes résultats ! Personnellement je serai tenté d'ajouter à chaque lien cliquable un id unique (une sorte de jeton) dont j'enregistrerai en session (ou dans une table) la valeur.
    Dans le script server je vérifierais:
    1. l'existence de cet id dans la requête et dans la table
    2. que cet id n'a pas expiré (si c'est une contrainte intéresante pour toi)
    3. l'existence optionnelle d'une variable server HTTP_REFERER correcte


    En fait sur le même principe de précaution concernant le post répété de formulaires.

    ERE

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Par défaut
    C'est la solution que j'ai adopté! Au top !

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

Discussions similaires

  1. [OL-2010] VBA pour intégrer les dates de réceptions dans les objets ?
    Par Megajav dans le forum Outlook
    Réponses: 4
    Dernier message: 01/07/2015, 10h50
  2. [AJAX] Existe t'il des failles de sécurité spécifique à Ajax ?
    Par FrontLine dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 28/02/2008, 01h57
  3. [DEV] Protéger les données des objets en objective-C
    Par Ceylo dans le forum Objective-C
    Réponses: 0
    Dernier message: 01/12/2007, 16h11
  4. [AJAX] tester l'éxistance d'un objet
    Par zooffy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/01/2007, 10h25
  5. [AJAX] Ajax: xhr_object.responseText undefined
    Par Mat_DZ dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 03/08/2006, 10h14

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