2009-07-31 3 views
5

J'ai demandé "How to run a executable file from a web page?"Étonnamment, le code JavaScript pourrait exécuter n'importe quel processus qu'il veut. Pourquoi?

Beaucoup de gens m'ont dit que c'est impossible, mais mon collègue trouve un morceau de code JavaScript qui pourrait exécuter n'importe quel processus. Je ne peux pas croire ActiveX est si dangereux.

Comment cela est-il arrivé? Pourquoi cela n'est pas interdit par IE?

<SCRIPT language=JavaScript> 
    function Run(strPath) { 

    try { 
    var objShell = new ActiveXObject("wscript.shell"); 
    objShell.Run(strPath); 
    objShell = null; 
    } 
    catch (e){alert('Can not find "'+strPath) 

    } 
    } 
    </SCRIPT> 

    <BUTTON class=button onclick="Run('notepad')">notepad</BUTTON><br> 
    <BUTTON class=button onclick="Run('mspaint')">mspaint</BUTTON><br> 
    <BUTTON class=button onclick="Run('calc')">calc</BUTTON><br> 
    <BUTTON class=button onclick="Run('format c:')">format c:</BUTTON><br> 
+1

Un de mes amis a même enregistré un exécutable dans 'C: /' en utilisant ActiveXObject. Et il n'y avait pas de niveau particulier de restrictions. Les réglages provenaient de "l'usine". –

+0

Pourquoi est-ce possible? Parce que IE suce vraiment fort! –

Répondre

6

Pendant que vous pouvez le faire IE bloque en disant qu'il y a un

contrôle ActiveX tente d'accéder votre ordinateur, cliquez ici pour les options

Vous ne pouvez lancez-les si l'utilisateur final le permet aussi et avec un peu de chance, les gens sont assez malins pour ne pas le laisser fonctionner. Si vous le permettez, il y a toujours une autre alerte demandant si vous voulez réellement lancer ceci, donc il devrait y avoir suffisamment de sécurité autour de lui.

1

Avez-vous essayé? Wscript.shell ne peut pas être utilisé de cette manière à partir d'une page Web chargée à distance. Si vous avez chargé la page Web à partir d'un fichier local ou si vous avez modifié vos paramètres de sécurité, cela peut fonctionner, mais cela ne fonctionnera pas si vous êtes chargé depuis un serveur Web distant.

+0

Cela se produira également si vous l'exécutez à partir du fichier: // – AutomatedTester

+0

Non, cela fonctionne aussi à distance. Il a juste demandé si l'utilisateur aimerait lancer un ActiveX, que la plupart des gens choisiront "OUI" – ablmf

+0

Cela ne fonctionne pas sur l'un des ordinateurs sur lesquels j'ai essayé. Le vôtre doit être configuré différemment – jcoder

0

La bonne nouvelle est que IE8 bloque ce comportement, même avec un fichier local. Je ne connais pas IE7, bien que j'imagine que c'est aussi le cas. Je doute que cela fonctionnerait avec un fichier distant, même avec IE6, sinon nous aurions eu un incident majeur à ce jour et un correctif aurait été émis.

+0

Non, ce n'est pas vrai. Je l'ai testé sur IE8. Il demande simplement à l'utilisateur s'il aimerait lancer ActiveX. – ablmf

3

Les fichiers locaux s'exécutent dans un environnement de sécurité différent des fichiers distants, alors que cela fonctionne si vous enregistrez le fichier en tant que HTML et l'ouvrez depuis votre ordinateur, si vous le téléchargez sur un serveur ça ne marchera pas.

0

Cela dépend de la configuration de sécurité de votre navigateur. Dans certains cas, cette paix de code ne sera pas exécutée. Mais de toute façon, l'utilisateur sera invité à autoriser ActiveX à exécuter le processus externe:

ActiveX Control is trying to access you computer, click here for options 
Questions connexes