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