2013-09-23 30 views
2

我正在研究SPA,並想知道在頁面上顯示和隱藏HTML元素的最佳方法取決於用戶憑據。保護SPA中的HTML元素

我有一個使用AngularJS的RestfulAPI後端和JS重客戶端。在獲得身份驗證後,我希望頁面的某些元素變得可見,並根據用戶授權的內容隱藏其他元素。
現在我發送一個JSON對象從服務器進行身份驗證,它包含權限列表(只是一個字符串數組),並顯示/隱藏元素,具體取決於權限數組中相應鍵的存在。
我有我的服務器端APIs安全,並確保在處理每個請求之前 - 用戶授權。
此,我想,會幫我防範人與我的HTML篡改& JS並啓用客戶端上的元素和試圖使他們無權請求。

僞安全級別我確保發送到客戶端的權限名都只是一個別名到實際權限。當API試圖授權請求時,它所尋找的聲明的命名方式不同。
我的問題是 - 這是一種安全的方法嗎?
那裏有更好的方法嗎?
我是否應該僅在授權時才從服務器獲取HTML模板,其中僅包含用戶有權查看的HTML?
如果我的服務器端授權是密封的,那麼用戶查看所有HTML的能力是否還是很重要?

回答

1

如果我的服務器端授權是不透氣的,那麼用戶查看所有HTML的能力是否還是很重要?

從安全角度看,它沒有,而且你的方法是正確的。

從用戶體驗的角度來看,只要是正確的,因爲你還能確保你的HTML渲染代碼是足夠強大的不要混淆與出現在錯誤的時間錯誤的元素的用戶。

4

如果我的服務器端授權是密封的,那麼用戶查看所有HTML的能力是否還是很重要?

你的問題的最後這部分是真正的關鍵,整個事情。

您的服務器授權必須保持氣密,因爲沒有任何東西阻止任何人向您的ajax API發出直接http請求。一旦API公開(只要你發佈你的網站),那麼這些URL可以被任何人調用。因此,從安全角度來看,您的服務器代碼需要絕對堅實。

至於你的客戶端代碼,你說得對,這其實並不重要。沒有什麼可以阻止某人在您的網站上查看HTML,CSS和Javascript代碼,所以您不必擔心試圖阻止他們這樣做(這是不可能的),您需要專注於確保它不會發生「不管他們做什麼事

如果頁面上有元素,則用戶可以訪問它。這就是客戶端軟件的本質。

但是這些元素中的數據需要保護,而不是元素本身。

如果不允許用戶查看給定的數據很重要,那麼首先不要將其用於他的瀏覽器。這是唯一的方法。一旦它在瀏覽器中,用戶就可以完全訪問它,所以在發送之前確保他已被授權。