2011-05-06 56 views
1

我正在考慮創建RIA版本的傳統Web應用程序。在傳統的網絡應用程序中,大部分代碼都在服務器上,顯然,與客戶端脫節。在那裏,我至少有條件代碼來檢查當前用戶是否有權執行某些操作,或者顯示哪些表單域。 在RIA中,所有代碼都在瀏覽器中運行。所以我看來有兩個選擇。將授權和安全性應用於RIA的

  1. 如果我需要顯示錶單,請從服務器動態獲取表單。這是有效的,但它使服務器做更多的工作,而不僅僅是來回編組JSON。
  2. 從服務器回收帳戶數據,並在客戶端上執行所有授權代碼。我在basecampmobile上看到了一個高峯,看起來他們正在做這樣的事情。 我的問題是,隱藏在閉包後面的這些信息是否真正保護它,還是這種「隱晦的安全性」?

回答

0

我會在服務器和客戶端上進行授權。客戶端向服務器進行身份驗證,服務器只返回屬於該客戶端/用戶的數據。然後在客戶端上檢查特定的授權以相應地更新UI。

記住,你可以隨時跳進開發工具,看到了網絡流量,所以我們甚至沒有談論默默無聞這裏...

+0

因此,您建議服務器發送一個包含用戶授權級別的數據結構,並且客戶端使用嵌入在客戶端中的規則來執行此操作? – blockhead 2011-05-07 17:51:53

+0

目標是僅發送用戶有權查看/使用的數據。從服務器發送的任何敏感信息都可能受到影響。 – Julien 2011-05-08 03:36:24

+0

嵌入客戶端的任何規則都可以改變。不信任客戶端。 – 2011-07-10 12:30:58

0

當你胖客戶端上工作,你應該檢查用戶的安全性上都服務器和客戶端,因爲客戶端很容易被黑客入侵。

我不喜歡RIA服務基於角色的授權。使用像SQL Server那樣的基於訪問的授權更直觀,並且它不會強制你在客戶端重新實現安全性。例如,不是說x,y和y可以訪問這個createCustomer(..)方法,而是更直觀地說一個擁有「Create」權限的人可以訪問這個方法。 我有一個開放源代碼的框架來協調這種類型的授權read more here。它被稱爲saf-framework。