2012-03-13 100 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類型。

相關問題