2

假设我有一个网站,如果客户端已安装并登录到桌面应用程序,效果会更好。我希望能够做两件事:

  • 如果他们尚未安装应用程序,请更改网站(以便他们轻松找到安装程序的链接)
  • 如果他们在几台机器上安装了应用程序,请确定他们正在从哪台机器上浏览

我想要在 Windows 和 OSX 上运行的东西,在任何主要浏览器上。Linux 是一个奖励。

一些想法:

  • 网站可以检测您是否安装了 Flash。它是如何工作的,它可以用于我的两个目标吗?
  • 我可以让客户端在 localhost 上提供 HTTP 并执行一些 javascript 请求来获取本地 ID 吗?我知道谷歌桌面搜索曾经做过类似的事情。这是标准做法吗?

谢谢!

4

5 回答 5

4

您可以从您的桌面应用程序注册一个协议(请参阅)。例如,这可用于使用来自网站的任意数据打开您的桌面应用程序。然后你可以让你的桌面应用程序向你的网络服务器发送一个 HTTP 请求,告诉它你在哪台机器上。

于 2008-10-01T20:20:26.353 回答
2

您可以拥有一个可以与应用程序通信的浏览器插件(用于 IE 的 activex 或用于其余浏览器的 Netscape 插件)。当网页加载时,它可以尝试实例化插件,如果成功,它可以将其用作应用程序的代理。如果失败,则说明应用程序未安装或插件被用户明确禁用。无论哪种方式,您的网站都应该相应地降低其功能。

更新:忘记回答您的问题:

  1. Flash 正是这样做的。Flash 是由网页创建的浏览器插件。
  2. 您可以在应用程序/插件安装时生成机器 ID,并且您的插件可以在创建时将该机器 ID 传递给网页。

关于使用本地网络服务器的主题

我会远离拥有本地网络服务器,主要是出于安全考虑。需要做大量工作才能确保您的本地网络服务器被充分锁定,并且没有其他恶意网站可以利用的 XSS 漏洞使其代表他们做事。

另外,拥有一个网络服务器意味着它必须作为系统范围的进程运行,或者如果它作为用户运行,您可以让网站只与一个用户的应用程序实例交互,即使可以登录多个用户并同时运行它。

谷歌桌面搜索遭受了 XSS 安全漏洞(尽管他们修复了它)和只有一个用户能够在机器上使用它的限制(我不知道他们是否修复了这个问题,尽管他们很有可能做到了) .

于 2008-10-01T20:16:40.217 回答
1

网站可以检测您是否安装了 Flash。

实际上,我相信浏览器可以检测您是否安装了浏览器的Flash插件,并且网页可以提供浏览器可以选择的“已安装”和“已卸载”选项。

否则,您正在寻求一种方法,通过在网页中放置一些代码,能够分析用户的家用计算机,并将它学到的内容报告给您的网站。

你能说主要安全漏洞吗?

于 2008-10-01T20:20:28.087 回答
0

如果您可以为桌面应用程序选择开发环境,请查看 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/

于 2008-10-01T20:17:24.177 回答
0

网站可以检测您是否安装了 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
}
于 2008-10-01T20:21:41.453 回答