[英]What is the best way for a website to check if a user has installed a client app?
假設我有一個網站,如果客戶端已安裝並登錄到桌面應用程序,則該網站會運行得更好。 我希望能夠做兩件事:
我想要在 Windows 和 OSX 上運行的東西,在任何主要瀏覽器上。 Linux 是一個獎勵。
一些想法:
謝謝!
您可以從桌面應用程序注冊協議(請參閱此)。 例如,這可用於使用來自網站的任意數據打開您的桌面應用程序。 然后你可以讓你的桌面應用程序向你的網絡服務器發送一個 HTTP 請求,告訴它你在哪台機器上。
您可以擁有一個可以與應用程序通信的瀏覽器插件(用於 IE 的 activex 或用於其余瀏覽器的 Netscape 插件)。 當網頁加載時,它可以嘗試實例化插件,如果成功,它可以將其用作應用程序的代理。 如果失敗,則說明應用程序未安裝或插件已被用戶明確禁用。 無論哪種方式,您的網站都應相應地降低其功能。
更新:忘了回答你的問題:
關於使用本地網絡服務器的話題:
我會遠離本地網絡服務器,主要是出於安全考慮。 需要做很多工作才能確保您的本地網絡服務器被充分鎖定,並且沒有其他惡意網站可以利用的 XSS 漏洞來代表他們做事。
另外,擁有網絡服務器意味着它必須作為系統范圍的進程運行,或者如果它作為用戶運行,您可以讓網站僅與一個用戶的應用程序實例交互,即使可以登錄多個用戶並同時運行它。
Google 桌面搜索既有 XSS 安全漏洞(雖然他們修復了它),也有只有一個用戶能夠在一台機器上使用它的限制(我不知道他們是否已經修復了這個漏洞,盡管他們很有可能已經修復了) .
網站可以檢測您是否安裝了 Flash。
實際上,我相信瀏覽器可以檢測您是否安裝了瀏覽器的 Flash 插件,並且網頁可以提供瀏覽器可以選擇的“已安裝”和“已卸載”選項。
否則,您正在尋求一種方法,通過在網頁中放置一些代碼,能夠分析用戶的家用計算機,並將其學到的內容報告給您的網站。
你能說主要安全漏洞嗎?
如果您可以為桌面應用程序選擇一個開發環境,那么請查看 Adobe 的 AIR。 它允許您使用 html/javascript、Flash 或 Flex 開發桌面應用程序。
它具有 API 調用,您可以從基於瀏覽器的 Flash 應用程序使用它來查看是否安裝了基於桌面的 AIR 應用程序、版本等。您甚至可以啟動它並將參數從 Web 應用程序傳遞到桌面應用程序。
http://www.rogue-development.com/blog2/2008/03/interacting-with-an-air-app-from-a-browser-based-app/
網站可以檢測您是否安裝了 Flash。 它是如何工作的,它可以用於我的兩個目標嗎?
這很簡單,您的瀏覽器會嘗試使用某些特定格式(例如 flash .swf
呈現一些其他文件,而我的瀏覽器找不到安裝,然后將開始下載,或者您將獲得下載該程序的選項. Flash 也使用AC_RunActiveContent.js
請看看這個 js,人們通常把它放在他們的網頁上
if (AC_FL_RunContent == 0) {
alert("This page requires AC_RunActiveContent.js.");
} else {
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave cabs/flash swflash.cab#version=8,0,0,0','width','981','height','635','id','build5','align','middle','src','build5','quality','high','bgcolor','#ffffff','name','build5','allowscriptaccess','sameDomain','allowfullscreen','false','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','build5' ); //end AC code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.