8
votes

Exécuter un code JavaScript dans un objet JSON?

est là-bas?

Alors quelque chose comme: xxx

donc quelque_code serait exécuté sans aucune intervention de l'utilisateur?


1 commentaires

Comme ci-dessous, oui vous pourriez. Cependant, il est mieux évité. Si vous fournissez cela à une tierce partie est bloquée.


4 Réponses :


2
votes

Il est possible de le faire, oui, par exemple en faisant cela: xxx

Cependant, cela ne serait plus valide JSON. JSON n'accepte pas les fonctions.


1 commentaires

HMM - un peu difficile à construire et à transmettre cette structure à partir d'un serveur de backend au navigateur client EH?



3
votes

Ce ne serait plus JSON. Mais vous pouvez poster-traiter le JSON analysé:

json = { key1 : "val1", key2: "val2", elem: "someid", html:"test" };
document.getElementById(json.elem).innerHTML=json.html;


0 commentaires

1
votes

Eh bien, d'abord, vous devez d'abord échapper aux guillemets: xxx

(ou utilisez des guillemets simples.)

Si vous souhaitez évaluer le . Certains_code en tant que script, c'est aussi simple que de le transmettre à Eval: xxx

Ceci est, bien sûr, très dangereux, sauf si vous avez un contrôle absolu sur le contenu de quelque_code .


0 commentaires

4
votes

Non.

Tout d'abord, votre exemple n'est pas valide JSON. Essayez-le à JSON Validator .

deuxième de tous, JSON est une norme d'échange de données et lorsqu'il est correctement analysé, tout texte à l'intérieur de celui-ci du code ne sera pas exécuté.

lire sur Problèmes de sécurité JSON .

règle de base: N'utilisez pas JavaScript eval fonction, utilisez plutôt un analyseur prêt à préparer, tel que Douglas Crockford's JSON Evaluator .


1 commentaires

ok merci les gars - je pense que je vais probablement coller à cela - JSON comme des données et aucun moyen possible de "auto-exécuter" un objet JSON.