2009-07-31 14 views
5

ho chiesto "How to run a executable file from a web page?"Sorprendentemente, il codice JavaScript può eseguire qualsiasi processo desiderato. Perché?

Molte persone mi hanno detto che è impossibile, ma il mio collega trovare un pezzo di codice JavaScript in grado di eseguire qualsiasi processo. Non posso credere che ActiveX sia così pericoloso.

Come può accadere? Perché questo non è vietato da 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 mio amico ha persino salvato un eseguibile in 'C: /' utilizzando ActiveXObject. E non c'era nessun livello speciale di restrizioni. Le impostazioni erano da "fabbrica". –

+0

Perché è possibile? Perché IE fa schifo davvero! –

risposta

6

Mentre si può fare questo IE bloccarlo dicendo che c'è un controllo ActiveX

sta tentando di accedere il computer, fare clic qui per le opzioni

Si può solo eseguirli se l'utente finale consente anche loro e si spera che le persone siano abbastanza intelligenti da non consentirne l'esecuzione. Se lo permetti, c'è sempre un altro avviso che ti chiede se vuoi davvero eseguire questo, quindi ci dovrebbe essere abbastanza sicurezza attorno ad esso.

1

Hai provato questo?

wscript.shell non può essere utilizzato in questo modo da una pagina Web caricata da remoto. Se hai caricato la pagina web da un file locale o hai cambiato le tue impostazioni di sicurezza, potrebbe funzionare ma non funzionerà se caricata da un server web remoto.

+0

Ciò si verifica anche se lo si esegue dal file: // – AutomatedTester

+0

No, funziona anche da remoto. Mi ha solo chiesto se l'utente desidera eseguire un activex, che la maggior parte delle persone sceglierà "YES" – ablmf

+0

Non funziona su nessuno dei computer su cui l'ho provato. I vostri devono essere configurati in modo diverso – jcoder

0

La buona notizia è che IE8 blocca questo comportamento, anche con un file locale. Non so di IE7, anche se immagino che questo sia anche il caso. Dubiterei che funzionerebbe con un file remoto, anche con IE6, altrimenti avremmo avuto qualche incidente importante ormai e sarebbe stata rilasciata una patch.

+0

No, non è vero. L'ho provato su IE8. Basta chiedere all'utente se vorrebbe eseguire activex. – ablmf

3

I file locali vengono eseguiti in un ambiente di sicurezza diverso rispetto ai file remoti, quindi mentre funzionerà se si salva il file come html e lo si apre dal computer, se lo si carica su un server e si tenta di eseguirlo da lì non funzionerà.

0

Dipende dalla configurazione di sicurezza del browser. In alcuni casi questa pace di codice non verrà eseguita. Tuttavia, all'utente verrà chiesto di consentire a ActiveX di eseguire un processo esterno:

ActiveX Control is trying to access you computer, click here for options 
Problemi correlati