Exécution de JavaScript à partir de Flex :Cette fonction javascript est-elle dangereuse ?

StackOverflow https://stackoverflow.com/questions/20510

  •  09-06-2019
  •  | 
  •  

Question

J'ai une application flexible qui doit pouvoir générer et exécuter du JavaScript.Quand je dis cela, je veux dire que je dois exécuter le JavaScript brut que je crée dans mon application Flex (pas seulement une méthode JavaScript existante)

Je fais actuellement cela en exposant la méthode JavaScript suivante :

function doScript(js){ eval(js);}

Je peux alors faire quelque chose comme ça dans Flex (remarque :Je fais quelque chose de plus substantiel qu'une boîte d'alerte dans la vraie application Flex) :

ExternalInterface.call("doScript","alert('foo'));

Ma question est la suivante : cela impose-t-il un risque de sécurité, je suppose que ce n'est pas le cas puisque Flex et JasvaScript fonctionnent tous côté client...

Y a-t-il une meilleure manière de faire cela?

Était-ce utile?

La solution

Il n'y a pas besoin de la fonction JavaScript, le premier argument de ExternalInterface peut être n'importe quel code JavaScript, il n'est pas nécessaire que ce soit un nom de fonction (la documentation le dit, mais c'est faux).

Essaye ça:

ExternalInterface.call("alert('hello')");

Autres conseils

Ce n'est pas intrinsèquement dangereux, mais dès que vous transmettez des données fournies par l'utilisateur dans la fonction, elle est mûre pour un exploit par injection de code.C'est inquiétant et quelque chose que j'éviterais.Je pense qu'une meilleure approche serait d'exposer uniquement les fonctionnalités que vous besoin, Et rien de plus.

Pour autant que je sache, et je ne suis certainement pas un hacker, vous allez tout à fait bien.Vraiment, si quelqu'un le voulait, il pourrait exploiter votre code de toute façon côté client, mais je ne vois pas comment il pourrait exploiter votre code côté serveur en utilisant javascript (sauf si vous utilisez javascript côté serveur)

Je ne vois pas où cela leur permet de faire quelque chose qu'ils ne pourraient pas déjà faire en appelant eval.S'il y a une faille de sécurité introduite ici, je ne la vois pas.

N'oubliez pas également que les actions du script sont contrôlées par la balise "AllowScriptAccess" dans l'instruction.Si la page Web ne souhaite pas ces actions, elle ne doit pas autoriser les scripts à l'appeler.

http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_16494

ExternalInterface.call("eval", "alert('hello');");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top