2011-01-22 135 views
4

我一直在嘗試學習一些關於SproutCore,遵循「Todos」教程,並且我有幾個問題未能在網上找到。SproutCore安全和身份驗證問題

  1. SproutCore應該將所有業務邏輯移動到客戶端。那不是不安全?惡意用戶可能很容易篡改代碼(因爲它全部在客戶端上)並改變應用程序的行爲方式。我在這裏怎麼錯了?
  2. SproutCore使用「DataStores」,其中一些可以是遠程的。我怎樣才能避免惡意用戶不與自己的後端進行交互?由於代碼位於客戶端,因此使用某種API密鑰將不起作用。這裏有什麼約定嗎?有任何想法嗎?這真讓我感到困惑。

在此先感謝!

PS:有人認爲Cappuccino是一個更好的選擇?我決定去SproutCore,因爲關於卡布奇諾的文檔看起來很糟糕,儘管SproutCore的效果並不好。

回答

6

伊恩

您的疑慮是有效的。事情是,它們適用於所有客戶端代碼,無論是什麼框架。因此:

Web應用程序是複雜的事情。將處理移動到客戶端是件好事,因爲它加快了應用程序的響應速度。但是,服務器必須驗證所有數據輸入,就像在任何其他Web應用程序中一樣。

此外,所有網絡應用程序都應使用在系統安全性中普遍存在的衆所周知的認證/授權範例。身份驗證意味着您必須驗證用戶是誰,並且他們可以使用該系統,授權意味着服務器必須驗證用戶是否可以執行他們正在嘗試的操作,例如,他們可以創建一個新的數據輸入,或編輯一個現有的數據。不向用戶展示他們不被允許執行的UI選項是一個很好的設計,但是你不應該依賴它。

所有Web應用程序都必須執行這些操作。

關於'與後端交互'的擔憂:再一次,所有的Web應用程序都有這個問題。您可以打開firebug/webkit,查看RIA在其操作中使用的所有xhr請求,並模仿它們嘗試在該系統上執行某些操作。同樣,這個問題由您必須執行的認證/授權檢查來處理。任何人都可以使用任何webclient向服務器發送請求。驗證該請求由開發人員決定。

SproutCore中的DataSources只是關於SC應用程序如何與服務器交互的抽象概念。然而,在一天結束時,所有SC正在做的就是向服務器發送XHR請求,就像任何其他RIA一樣。

+0

您是否知道減少客戶端和服務器之間的重複工作?例如。必須在服務器上重複在客戶端上完成的任何重要驗證;有沒有簡單的機制來只寫一次驗證碼? – 2012-04-18 14:51:03