2011-08-29 49 views
0

我正在開發一個基於Flex 4.5的基於Web的應用程序,並且我需要確保客戶端是否選擇特定級別的安全性,每個用戶只能從授權計算機登錄。Flex 4.5 - 獨特的計算機信息

所以問題是如何獲得一些獨特的計算機信息?像HDD序列號,CPU規格,主板信息,甚至登錄到操作系統的用戶都可以做到。

到目前爲止,網絡上的信息並沒有給我太多的希望,這可以實現,但我不得不問。 在此先感謝。

回答

1

使用基於瀏覽器的Flex應用程序這並不容易,但有一些解決方法。

基於瀏覽器的Flash Player可以使用localconnection與桌面上的AIR應用程序進行通信。因此,您可以創建一個利用NativeProcess來檢索機器特定信息的AIR應用程序。

您也可以在不使用瀏覽器的情況下使用AIR應用程序中的NativeProcess。

第三種選擇是安裝在客戶端計算機上的應用程序服務器,並有基於瀏覽器的應用程序與服務器以獲取客戶端的信息交流。

我認爲大多數這些選項太難以實用了,但這取決於這個特性對您的重要程度。

+0

我已經在考慮使用Java桌面應用程序來實現我的目標。我從來沒有想到我可以使用AIR應用程序,並感謝您的建議,因爲使用AIR應用程序會提升用戶體驗(UI一致性)。當我問我的問題時,我也希望有一個更簡單的解決方案,因爲下載和安裝不必要的桌面應用程序是非常煩人的任務。謝謝你有一個愉快的一天。 –

1

的Flash Player的安全沙箱不會讓你讀什麼關於該SWF在運行系統中唯一的,所以這恐怕是不可能的。你會得到最接近的可能Capabilities.serverString有可能IP地址一起,但serverString財產只是列出了所有的能力的客戶端,這顯然不是一個獨特的東西,而且還可能隨時發生變化,時間在同一臺計算機的

2

我想可供Web應用程序的唯一的選擇是從flash.system.Capabilities class領域創造出獨特的ID。

可以使用的其他策略是to generate unique UID在計算機的授權過程中,然後使用SharedObject將其存儲在本地存儲中。然後,Web應用嘗試在Web應用啓動時從SharedObject讀取授權數據。如果沒有這樣的數據計算機未被授權。

+0

+1我說這個。 –

+0

嗯,也許有一些我不明白,但我怎樣才能使生成的UID獨特的每臺機器?我的意思是,我試圖達到一定程度的安全性,只需將sharedobject文件複製到另一臺機器即可避開。 –

+0

不,這個建議無法防止將共享對象簡單地複製到其他計算機。所以它無法防止黑客入侵。但是大多數最終用戶對共享對象的本地存儲一無所知。 – Constantiner

2

理查德是對的。爲了安全起見,唯一標識信息不適用於通過Flash Player運行的應用程序。如果用戶(和他們的IT管理員)允許,您可以編寫Active X控件(用於IE)或插件(用於基於Mozilla的瀏覽器)來獲取應用程序的其他信息。可用信息將因用戶正在運行的瀏覽器和操作系統而異。

另一方面,Adobe Air允許訪問其他網絡信息,包括NetworkInfo類中的MAC地址。也許值得考慮爲需要額外安全性的用戶安裝的客戶端應用程序。看一看:http://www.adobe.com/devnet/air/flex/articles/retrieving_network_interfaces.html

0

警告:我的服務器端腳本的知識是有限的,至少可以說。 這不是一個技術解決方案,而是一個解決問題的方法。

的替代解決方案將是,以檢查在服務器的原始數據包,以便獲得如IP和MAC地址的數據。基於此,服務器可以拒絕或允許登錄嘗試。

我習慣於在微型控制器上運行的嵌入式Web服務器上運行,其中基於C的黑魔法相當普遍,所以我不確定在更傳統的環境中這是否可行或實用。