2014-05-12 127 views
2

我開發了一個Angular J的應用程序,它使用Rest API來訪問它的數據。Angular JS安全最佳實踐

我有發回在今後所有申請使用的令牌服務器上的登錄服務。沒有令牌,沒有數據。一旦令牌到期,將從服務器發送403狀態碼,並向用戶顯示登錄表單。

這是運作良好,但它確實讓我擔心了一下,一個未經認證的用戶訪問該網站首次將收到每一個模板/視圖時的角應用程序加載,在登錄前。

這不是一個這個項目的問題,但我的下一個項目是一個企業,可能不希望他們的競爭對手嗅探應用程序和看菜單等,即使他們不能沒有有效的帳戶得到任何數據。

這只是與所有單頁的應用程序有問題,也可能他們是加載所有的模板文件和控制器文件之前檢查初始頁面加載登錄的方法嗎?

+0

你說的「收到」的意思你是說他們你擔心視圖模板下載到用戶驗證之前的瀏覽器?如果是這樣,那麼你也許是一個「單頁」應用程序不適合你。或者您的意思是在登錄填充數據之前,模板是向用戶「繪製/顯示」的? – JeffryHouser

回答

2

我想我明白你在說什麼了。有棱有角,使用視圖等,問題是,很多沒有多少做訪問控制,而是躲在什麼用戶可以或不可以看到。這僅僅是因爲這些類型的MV *框架在客戶端。通常情況下,解決這個似乎服務器(私人)上進行處理的東西,然後將它們發送到只有在客戶端訪問這些資源的客戶端(通過使用,例如,如你所說,一個令牌。)

如果你還沒有研究過使用Node.js,它可以很容易地處理這個問題(顯然,Node.js不是唯一的選擇;任何其他服務器都可以這樣做,但它會涉及配置服務器以Apache爲例,您可以使用.htaccess文件。)

無論如何,如果您使用帶有Node.js的Express引擎,它會使用公用文件夾爲您的應用程序設置框架,該文件夾只包含靜態內容,用戶將能夠訪問(當我說靜態內容,我的意思是.html,.css,.js文件,等等)如果您不想向用戶顯示某些內容,除非他們有權查看該用戶,則可以從其他位置提供該資源,並簡單地將其呈現併發送給客戶端。使用Jade和Node.js/Express就是一個很好的例子。

+0

確保令牌存儲在httponly cookie中,以減少XSS竊取令牌和使用它的其他人http:// blog。codinghorror.com/protecting-your-cookies-httponly/ –

0

我不確定這是一個問題的原因。 HTML & JavaScript不應該包含任何敏感信息。所有這些東西都很容易提供給任何想看到它們的人。也許這是公司內部網的一個問題,但即使如此,菜單結構和其他類似的元素也不會成爲我的重點。

如果由於某種原因,它是,你要切換您的交付方式。您不希望HTML模板已經構建在客戶端,而是希望從服務器交付它們。所以切換到PHP單頁面應用程序(或其他服務器端語言)。

+0

大部分時間我都同意,但是,例如,我們很快就會爲我們的客戶之一建立一個客戶服務門戶,該門戶將爲其代理商以及他們的客戶提供登錄。 「代理區域」中導航的結構可能很敏感。 – jonhobbs