我问了“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>
答案 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