Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/10/2011, 20h10   #1
Invité régulier
 
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : 9
Points : 9
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
ZeroDivide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 04h39   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Citation:
Envoyé par ZeroDivide Voir le message
[...] (avec jquery) [...] développer une librairie js qui interprète [...]
Code :
1
2
$.getScript(url);
// Description: Load a JavaScript file from the server using a GET HTTP request, then execute it.
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 05h44   #3
Invité régulier
 
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : 9
Points : 9
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 )
ZeroDivide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 08h17   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 793
Points : 35 793
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 13h25   #5
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
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.
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 18h13   #6
Invité régulier
 
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : 9
Points : 9
Ok, merci pour ces précisions, je devrais pouvoir m'en tirer
ZeroDivide est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h40.


 
 
 
 
Partenaires

Hébergement Web