AngularJS 是否能滿足企業(yè)應用的安全需求
AndularJS開發(fā)團體最矚目的內(nèi)容是關注于所謂待開發(fā)內(nèi)容(greenfield)的開發(fā)--不依賴于空數(shù)據(jù)庫或新概念的新應用。然而這卻是開發(fā)新的Angular應用程序的常規(guī)方法,忽視了很多將已存在應用遷移到以Angular為中心的開發(fā)環(huán)境中能得到的好處。下面我們會瀏覽一下遷移到Angular的企業(yè)用戶會面臨的問題以及如何減輕這些問題的影響。
安全
大多數(shù)組織對已有產(chǎn)品遷移關注的第一個問題就是安全。其中最關注問題之一就是可能會向組織架構中引入安全漏洞。幸運的是這個問題在Angular環(huán)境中不是很嚴重。Angular的核心解決問題是特有的數(shù)據(jù)顯示 – 不管是REST API還是簡單的網(wǎng)絡服務,Angular應用程序都通過HTTPS接口與服務器通信,隨后將獲取到的數(shù)據(jù)顯示在屏幕上。從這方面來看,保證AngularJS應用程序的安全就和你的組織為加強安全已做的一樣簡單 – 在服務器上讀取安全的會話,防御注入攻擊,對異常訪問模式(abnormal calling patterns)加強防護。
對那些期望將他們Angular前端(front-end)展示給更多人的組織,也同樣提供了不同用于防御跨站腳本攻擊的方法。比如,Angular的$http模塊提供了現(xiàn)成的方法防御CSRF(雖然需要要求服務器支持這項功能)。另外,Angular同時支持strict expression evaluation(通過CSP)和提供執(zhí)行SCE(strict contextual escaping)的能力,可以減少大多數(shù)的客戶端安全問題。如果全部失敗,AngularJS也足夠靈活,可以整合更多可靠的第三方安全庫,比如OAuth。
充分利用現(xiàn)有的數(shù)據(jù)
AngularJS 的好處之一就是它對于所要依賴的數(shù)據(jù)管理系統(tǒng)沒有強加任何限制. 實現(xiàn)一個 AngularJS 應用程序的一個最流行的方法就是使用 RESTful API 提供所有的要依賴于數(shù)據(jù)庫的數(shù)據(jù)訪問. 通過利用可能已經(jīng)存在的內(nèi)部API,你可以很容易的用Angular代碼等價替換現(xiàn)有的前端代碼. 它同時也能花費最少的工作量來重復使用任何現(xiàn)有服務端的安全架構. 此外,如果正在被更替的應用程序目前正使用一種像Django 或者 Rails這樣的web應用程序框架, 更替就會想前端的更替一樣簡單, 它能讓你充分利用Angular指令風格的優(yōu)勢來快速增強網(wǎng)站系統(tǒng)的性能.
訪問管理
當我們利用AngularJS來充實現(xiàn)有的應用程序時,存在一個重要的擔憂,那就是它是否可以使用現(xiàn)有的安全策略來維持根據(jù)部門指南制定的訪問級別的安全限制. 利用 Angular 的靈活性, 要將現(xiàn)有的域系統(tǒng)集成到應用程序的登陸和安全流有許多可選的解決方案 – 比如 ActiveRecord/LDAP. 因為AngularJS 只是一個客戶端, 上述的這一功能并沒有內(nèi)置. 不過,還是有許多補充庫 – 比如 ldapjs – 它能通過AngularJS和相關的庫之間的交互來實現(xiàn)單點登錄. 利用這些外部的庫相當簡單,只要引入這些代碼并執(zhí)行一個快速的安全檢查,確保沒有引入額外的安全漏洞就行了.
總結
由于大多數(shù)的博客文章和新聞組談論 AngularJS 都將關注點凡在新的開發(fā)領域 – 一個新的應用程序的新的web外觀, 或者是在一個現(xiàn)有的軟件機構中新穎開發(fā) – 這很容忽略掉 AngularJS 在企業(yè)級領域的發(fā)展空間. 在企業(yè)級開發(fā)過程中的許多問題都已經(jīng)由 AngularJS 或者相關庫解決. 通過利用上述的信息作為基礎, 你的組織應該可以很容易的將 AngularJS 應用到組織現(xiàn)有的匹配web開發(fā)模式的項目中.