令人惊讶的是,JavaScript代码应该执行它想要的任何进程。为什么?

时间:2009-07-31 09:13:43

标签: javascript

我问了“How to run a executable file from a web page?

很多人告诉我这是不可能的,但是我的同事发现了一段可以执行任何过程的JavaScript代码。我无法相信ActiveX是如此危险。

怎么会发生这种情况?为什么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>   

5 个答案:

答案 0 :(得分:6)

虽然你可以这样做,IE会阻止它说有一个

  

ActiveX控件正在尝试访问   你的电脑,点击这里查看选项

如果最终用户也允许这样做,你只能运行这些,并希望人们足够聪明,不允许它运行。如果你确实允许它,那么总会有另一个警告,询问你是否真的要运行它,以便它周围应该有足够的安全性。

答案 1 :(得分:3)

本地文件运行在与远程文件不同的安全环境中,因此如果您将文件另存为html并从计算机中打开它,如果您将其上传到服务器并尝试从那里运行它不行。

答案 2 :(得分:1)

你试过这个吗?

wscript.shell不能以这种方式从远程加载的网页中使用。如果您从本地文件加载了网页或更改了安全设置,它可能会起作用,但从远程Web服务器加载时它将无法工作。

答案 3 :(得分:0)

好消息是IE8阻止了这种行为,即使使用本地文件也是如此。我不知道IE7,虽然我会想象这也是如此。我怀疑它可以使用远程文件,即使使用IE6,否则我们现在会遇到一些重大事件,并且会发布一个补丁。

答案 4 :(得分:0)

它取决于您的浏览器的安全配置。在某些情况下,这种代码的和平将不会被执行。但无论如何,将要求用户允许ActiveX运行外部进程:

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