簡體   English   中英

網站檢查用戶是否安裝了客戶端應用程序的最佳方式是什么?

[英]What is the best way for a website to check if a user has installed a client app?

假設我有一個網站,如果客戶端已安裝並登錄到桌面應用程序,則該網站會運行得更好。 我希望能夠做兩件事:

  • 如果他們尚未安裝應用程序,則更改網站(以便他們輕松找到安裝程序的鏈接)
  • 如果他們在幾台機器上安裝了該應用程序,請確定他們正在瀏覽哪台機器

我想要在 Windows 和 OSX 上運行的東西,在任何主要瀏覽器上。 Linux 是一個獎勵。

一些想法:

  • 網站可以檢測您是否安裝了 Flash。 它是如何工作的,它可以用於我的兩個目標嗎?
  • 我可以讓客戶端在本地主機上提供 HTTP 服務並執行一些 javascript 請求來獲取本地 ID 嗎? 我知道谷歌桌面搜索曾經做過這樣的事情。 這是標准做法嗎?

謝謝!

您可以從桌面應用程序注冊協議(請參閱)。 例如,這可用於使用來自網站的任意數據打開您的桌面應用程序。 然后你可以讓你的桌面應用程序向你的網絡服務器發送一個 HTTP 請求,告訴它你在哪台機器上。

您可以擁有一個可以與應用程序通信的瀏覽器插件(用於 IE 的 activex 或用於其余瀏覽器的 Netscape 插件)。 當網頁加載時,它可以嘗試實例化插件,如果成功,它可以將其用作應用程序的代理。 如果失敗,則說明應用程序未安裝或插件已被用戶明確禁用。 無論哪種方式,您的網站都應相應地降低其功能。

更新:忘了回答你的問題:

  1. Flash 就是這樣做的。 Flash 是由網頁創建的瀏覽器插件。
  2. 您可以在應用程序/插件安裝時生成機器 ID,並且您的插件可以在創建時將該機器 ID 傳遞給網頁。

關於使用本地網絡服務器的話題

我會遠離本地網絡服務器,主要是出於安全考慮。 需要做很多工作才能確保您的本地網絡服務器被充分鎖定,並且沒有其他惡意網站可以利用的 XSS 漏洞來代表他們做事。

另外,擁有網絡服務器意味着它必須作為系統范圍的進程運行,或者如果它作為用戶運行,您可以讓網站僅與一個用戶的應用程序實例交互,即使可以登錄多個用戶並同時運行它。

Google 桌面搜索既有 XSS 安全漏洞(雖然他們修復了它),也有只有一個用戶能夠在一台機器上使用它的限制(我不知道他們是否已經修復了這個漏洞,盡管他們很有可能已經修復了) .

網站可以檢測您是否安裝了 Flash。

實際上,我相信瀏覽器可以檢測您是否安裝了瀏覽器的 Flash 插件,並且網頁可以提供瀏覽器可以選擇的“已安裝”和“已卸載”選項。

否則,您正在尋求一種方法,通過在網頁中放置一些代碼,能夠分析用戶的家用計算機,並將其學到的內容報告給您的網站。

你能說主要安全漏洞嗎?

如果您可以為桌面應用程序選擇一個開發環境,那么請查看 Adob​​e 的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM