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

JavaScript Discussion :

Javascript, AJAX, eval et sécurité


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 14
    Par défaut Javascript, AJAX, eval et sécurité
    Bonsoir à tous,

    Je suis actuellement sur un projet web avec des pages relativement interactives, j'utilise donc javascript/ajax (avec jquery).

    Jusqu'ici tout fonctionne, mais un problème se pose à moi, les éléments de la page à mettre à jour dépendant du résultat de la requête ajax (traitée par un script php, mais peu importe), je me retrouve rapidement avec des tas de "spaghetti code" dans mon javascript pour traiter le résultat. Et ça, ceymal

    Bref, j'envisage plusieurs solutions:
    - développer une librairie js qui interprète un "pseudocode" renvoyé par le script php (réutilisable, mais développement plus long).
    - faire renvoyer du js par le script php et procéder à un eval. Quid de la sécurité?
    - employer une solution existante?


    Voila, si quelqu'un à des experiences/suggestion/réponses sur le sujet je suis preneur

  2. #2
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par ZeroDivide Voir le message
    [...] (avec jquery) [...] développer une librairie js qui interprète [...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $.getScript(url);
    // Description: Load a JavaScript file from the server using a GET HTTP request, then execute it.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 14
    Par défaut
    Mais c'est fou ça!

    Bon à priori ça correspond à un eval et n'est qu'un raccourci syntaxique, donc la question reste posée niveau sécurité, c'est safe d'utiliser cette fonction en mode fête du slip ou il y a des précautions à prendre/déconseillé? (hormis ne pas evaluer directement des input utilisateur j'entend )

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Non, ça ne correspond pas à un eval(), au contraire, getScript() crée une nouvelle balise script avec comme src l'URL demandée.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Non, ça ne correspond pas à un eval(), au contraire, getScript() crée une nouvelle balise script avec comme src l'URL demandée.
    ça dépend des version et des navigateurs, dans certains cas, getScript fera un appel ajax et l'évaluera (soit avec eval, soit en attachant un nouveau script avec le contenu de la réponse).

    dans le cas de l'appel ajax, ceci aura pour effet de (NICKER TON SITE ET TE FAIRE PERDRE 50% DE VISITEURS ) de ne pas être cross-domain.

    aussi, il faut savoir que comme pour l'eval il faut savoir qu'attacher un script ne garde pas forcément le contexte actuel. exemple tout simple, les scripts greasemonkey (ou extensions.JS sous chrome) utilisent un objet "window" différent de celui de la page. (sous greasemonkey, on peut accèder à celui de la page via "unsafeWindow" ) mais contiennent par contre l'objet "document" réel de la page. Ainsi si tu attaches un script au "body" depuis l'une de ces extensions, ton script utilisera un objet "window" différent de celui de ton extension et donc des variables et contexte différent.

    @ZeroDivide: pour la sécurité, effectivement si ton code est généré en fonction d'une base de donnée générée par les visiteurs, tu auras des risques que ce soit avec eval ou l'ajout d'un script au header. mais de toute manière même pour les requêtes ajax, tu ne reçois qu'un string qui sera converti en objet coté client .. soit avec json.parse pour la plupart des navigateurs mais ceux qui ne possède pas cette méthode utiliseront un simple "eval" pour reconstruire l'objet json.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 14
    Par défaut
    Ok, merci pour ces précisions, je devrais pouvoir m'en tirer

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

Discussions similaires

  1. Sécurité de javascript (ajax, framework)
    Par senacle dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 29/06/2018, 15h04
  2. [AJAX] Redirection javascript & Ajax
    Par Florent08800 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/02/2007, 10h22
  3. [AJAX] JavaScript, Ajax et XML
    Par tclariss dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/10/2006, 22h53
  4. [AJAX] Ajax, formulaire, div et select
    Par n8ken dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/09/2006, 10h51

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