【发布时间】:2011-08-29 19:00:15
【问题描述】:
我正在开发一个基于 flex 4.5 Web 的应用程序,我需要确保如果客户端选择了特定级别的安全性,每个用户只能从授权计算机登录。
所以问题是我怎样才能获得一些独特的计算机信息?硬盘序列号、CPU 规格、主板信息,甚至登录到操作系统的用户都可以做到。
到目前为止,网络上的信息并没有给我很大的希望,但我不得不问。 提前致谢。
【问题讨论】:
标签: apache-flex flex4.5 unique-key
我正在开发一个基于 flex 4.5 Web 的应用程序,我需要确保如果客户端选择了特定级别的安全性,每个用户只能从授权计算机登录。
所以问题是我怎样才能获得一些独特的计算机信息?硬盘序列号、CPU 规格、主板信息,甚至登录到操作系统的用户都可以做到。
到目前为止,网络上的信息并没有给我很大的希望,但我不得不问。 提前致谢。
【问题讨论】:
标签: apache-flex flex4.5 unique-key
我想 Web 应用程序可用的唯一选项是从 flash.system.Capabilities class 的字段创建唯一 id。
可以使用的其他策略是to generate unique UID在计算机授权过程中,然后使用SharedObject将其存储在本地存储中。然后网络应用程序尝试在网络应用程序启动时从SharedObject 读取授权数据。如果没有这样的数据计算机是没有授权的。
【讨论】:
理查德是对的。为安全起见,通过 Flash Player 运行的应用程序没有唯一的识别信息。如果用户(及其 IT 管理员)允许,您可以编写 Active X 控件(用于 IE)或插件(用于基于 Mozilla 的浏览器)来获取应用程序的附加信息。可用信息会因用户运行的浏览器和操作系统而异。
另一方面,Adobe Air 允许访问其他网络信息,包括 NetworkInfo 类中的 MAC 地址。也许值得考虑为需要额外安全性的用户安装客户端应用程序。看一看:http://www.adobe.com/devnet/air/flex/articles/retrieving_network_interfaces.html
【讨论】:
使用基于浏览器的 Flex 应用程序并不容易,但有一些解决方法。
基于浏览器的 Flash Player 可以使用本地连接与桌面上的 AIR 应用程序进行通信。因此,您可以创建一个 AIR 应用程序,该应用程序利用 NativeProcess 来检索您的机器特定信息。
您也可以在不使用浏览器的情况下从 AIR 应用程序中使用 NativeProcess。
第三种选择是在客户端计算机上安装应用程序服务器,并让基于浏览器的应用程序与服务器通信以检索客户端信息。
我认为这些选项中的大多数都很难实用,但这取决于此功能对您的重要性。
【讨论】:
Flash Player 安全沙箱不会让您读取任何有关运行 SWF 的系统的独特信息,因此恐怕这是不可能的。最接近的可能是 Capabilities.serverString 以及 IP 地址,但 serverString 属性只列出了客户端的所有 功能,这显然不是一个独特的东西,也可能会改变不时用于同一台计算机。
【讨论】:
警告:我对服务器端脚本的了解至少是有限的。 这不是技术解决方案,而是解决问题的不同方法。
另一种解决方案是在服务器上检查原始数据包,以获取 IP 和 MAC 地址等数据。基于此,服务器可以拒绝或允许登录尝试。
我习惯于在基于 C 的黑魔法相当普遍的微控制器上运行嵌入式 Web 服务器,因此我不确定这在更传统的环境中是否可行或实用。
【讨论】: