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