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 :

Bloquez certains évènements javascripts


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Par défaut Bloquez certains évènements javascripts
    Bonjour tout le monde,
    un post similaire existe peut-être mais mon cas est un peu particulier.

    Je suis en train de faire un mini application web. Dans cette application, je fais des appels en JSONP (je contourne ainsi les problèmes dû aux erreurs d'access denied) de mini-modules que je développe moi ou des personnes tiers.

    Au début, pour régler le problème lié au risque du contrôle du javascript par un des modules, je fais un petit nettoyage avant d'afficher le module. Or, nous sommes dans un web où le javascript occupe place majeure pour une utilisation intuitive.

    Donc pour essayer de palier ce défaut, j'ai remplacé les appels en JSONP par de simples iframes.

    Et un autre défaut majeur est venu perturbé ce système. Le manque d'interactions entre l'application et le module.

    Ma requête est la suivante. Est-ce possible de combiner un appel de modules en JSONP tout en filtrant le javascript pouvant nuire à mon application (objet window, location...) en sachant que le développeur peut mettre du javascript dans n'importe élément avec un onclick ?

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Par défaut
    pas directement si tu fais du JSONP tu fais confiance à ta source.

    Si tu ne lui fait pas confiance, il faut récupérer toi même la page (avec un reverse proxy ou un autre truc du genre). Ce qui te permet de récupérer la chaine à valider, ce que tu peux faire avec
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <script src="http://json.org/json2.js"></script>
    <script>
        var objetJSONSecurise = JSON.parse(taChaineDeRetour);
    </script>

    Vala, maintenant tu peux utiliser ton objet json comme il faut. Je suppose qu'ensuite tu va le passer en paramètre d'une fonction callback quelconque.

    Pense à mettre le fichier json2.js sur ton serveur, c'est plus sympa :p
    Ce fichier permet de ne pas évaluer bêtement la chaine JSON pour éviter les choses non autorisés et puis aussi il fait attention à ne pas remplacer l'objet JSON natif si il est présent (ce qui est gentil de sa part )

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Par défaut
    Citation Envoyé par nod__ Voir le message
    pas directement si tu fais du JSONP tu fais confiance à ta source.

    Si tu ne lui fait pas confiance, il faut récupérer toi même la page (avec un reverse proxy ou un autre truc du genre). Ce qui te permet de récupérer la chaine à valider, ce que tu peux faire avec
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <script src="http://json.org/json2.js"></script>
    <script>
        var objetJSONSecurise = JSON.parse(taChaineDeRetour);
    </script>

    Vala, maintenant tu peux utiliser ton objet json comme il faut. Je suppose qu'ensuite tu va le passer en paramètre d'une fonction callback quelconque.

    Pense à mettre le fichier json2.js sur ton serveur, c'est plus sympa :p
    Ce fichier permet de prendre en compte la présence éventuelle de l'objet JSON natif pour ne pas le redéfinir (ce qui est gentil de sa part )
    Le problème n'est pas la récupération de la page mais son exécution.

    Le mini module comprend du HTML, CSS mais aussi du Javascript (parce que sans Javascript, c'est pas trop intéractif).

    Je voudrais laisser du Javascript mais qu'il puisse ne pas toucher au objets comme window par exemple

  4. #4
    Membre expérimenté Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Par défaut
    bah a part tout parser à la main, t'as pas des masses de solutions…


    Ou alors peut-être en fait, faudrait faire des tests mais je suis trop fatigué là. Et il y a surement des limitations qui vont rendre la manip impossible.

    J'ai bien peur qu'il ne te reste plus que tes yeux pour pleurer

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Par défaut
    On peut toujours faire un gros regexp, non ?

  6. #6
    Membre expérimenté Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Par défaut
    Ça dépend de la gueule du code que tu récupère…

    Si t'as des commentaires conditionnels dans le javasript… Ça veut dire que l'on viens juste de t'arracher les yeux, de marcher dessus et de les donner à manger aux oiseaux.

    J'espere vraiment que le script respecte des bonnes pratiques.

  7. #7
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    je préconiserais un méthode qui s'occupe de récupérer :
    - le code HTML
    - le css
    - le javascript

    de façon indépendant et reconstruire ta page dynamiquement ...

    pour le script et le css , insertion très simple , et pour l'html , part sur du json que tu formateras en live , ou sinon un bon vieux innerHTML

Discussions similaires

  1. Appeler du code behind depuis un événement javascript :
    Par FredChautems dans le forum ASP.NET
    Réponses: 8
    Dernier message: 24/03/2008, 13h36
  2. événement javascript impromptu
    Par Mathieu72 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/12/2007, 11h02
  3. Réponses: 4
    Dernier message: 21/09/2007, 15h14
  4. Réponses: 11
    Dernier message: 19/10/2006, 16h07
  5. perte d'événement Javascript
    Par mcrbe dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/12/2005, 11h37

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