2012-03-13 76 views
0

我试图运行一个JavaScript,通过Web浏览器在客户端系统上安装实用程序。因为这些是商业需求,所以和我一起。我似乎已经把一些东西放在一起,但这样做,我需要改变IE浏览器的设置,以启用“启动和脚本ActiveX控件不标记为安全的脚本”。这显然不能在现实世界中发挥作用。如果此设置未启用,则Web浏览器上显示的所有内容都是网页浏览器底部谨慎的“页面错误”。我最终希望将脚本标记为安全,以便提示客户端运行ActiveX控件。所以我的问题是如何标记一个JavaScript是安全的。我还想指出,我们的网页是使用.NET的剃须刀引擎(MVC3)创建的,因此我们将不胜感激兼容的解决方案。将JavaScript标记为安全

cshtml snippet 

script language=JavaScript 

function launchExecutable(executableFullPath) 

{ 

var shellActiveXObject = new ActiveXObject("WScript.Shell"); 

shellActiveXObject.Run(executableFullPath, 1, false); 

shellActiveXObject = null; 

} 

script 
.... 
+0

如果这是可能的,它会使所有这些浏览器特定的安全设置完全没有意义... – BalusC 2012-03-13 18:01:54

+0

即使您可以获得ActiveX控件运行(带有认证的数字签名?),也会有一些问题。 “运行”仅在用户的默认浏览器中打开(新选项卡)。如果“executableFullPath”类似于“http-protocol // executableFullPath.exe”,它无论如何都不会通过浏览器。 – Teemu 2012-03-13 18:53:14

回答

0

问题不在于您的Javascript不安全,而在于您使用的ActiveX控件未标记为对脚本安全。解决此问题的唯一方法是使用标记为安全的ActiveX控件,但您需要让客户端安装该控件。

我可能会采取检测错误的方法(使用try/catch),并显示一条消息告诉用户如何打开该选项。

+0

我感谢你的答案。我知道我在问一个毛茸茸的问题。这些都是商业需求,我们都知道商业人士如何去梦想。我如何去标记一个ActiveX控件是否安全。我仍然是前台的小菜鸟,所以我很欣赏任何建议。 – user1013651 2012-03-13 19:00:51

+0

@ user1013651 AFAIK你不能,除非你是ActiveX控件的开发者。您需要更改代码以将其标记为安全,然后重新编译的控件仍需要安装在所有客户端计算机上。我认为你应该考虑采取不同的方式来做这件事......这些安全设置存在是有原因的,对于这种特定的控制,它是为了防止用户运行任意shell命令的随机网站。 – 2012-03-13 19:32:18

+0

@ user1013651作为替代方案:1.您可以将该应用程序作为标准安装程序提供; 2.如果您正在开发您正在尝试安装的应用程序,则可以将其设置为从浏览器安装的Click-Once应用程序; 3.开发自己的ActiveX控件来安装应用程序,这将使用户更容易,因为它们将获得您需要安装组件的标准IE消息。 – 2012-03-13 19:34:16

1

您永远无法获得标记为安全的ActiveX控件,因为它使网站能够以完全的用户权限执行任何想要的操作。

没有我见过的网站按照你说的方式安装应用程序。他们要么为他们希望客户使用的每个浏览器安装一个浏览器插件,然后首先将其安装到浏览器中,然后下载并安装应用程序(我个人不喜欢Adobe),或者他们只是给你一个链接/重定向到.exe.msi.deb或任何需要用户单击对话框开始下载和安装的安装程序。

后者的Javascript是一个简单的重定向(如果需要的话),并且所有的工作都在web服务器上,确保它具有您提供的文件的正确MIME类型。