信息安全性是一個(gè)經(jīng)常被開(kāi)發(fā)人員誤解的主題,因?yàn)榻^大多數(shù)人關(guān)注的是安全技術(shù)層面,而非涉及人員、金錢、風(fēng)險(xiǎn)和業(yè)務(wù)優(yōu)先級(jí)等更廣泛的主題。因而,我們經(jīng)??吹揭?yàn)闆Q策失誤使得問(wèn)題更為復(fù)雜,同時(shí)也造成資源浪費(fèi)。
在構(gòu)建和選擇安全解決方案的時(shí)候,開(kāi)發(fā)人員必須為業(yè)務(wù)和組織架構(gòu)挑選出最為準(zhǔn)確的方案。對(duì)于初級(jí)開(kāi)發(fā)人員而言,如何清楚地知道該在哪些范圍內(nèi)做出安全決策,顯得尤其重要。
1. 避免教條主義和絕對(duì)主義
最近有一位投稿人在dev.to 文章中分享了關(guān)于JSON網(wǎng)頁(yè)令牌和本地緩存主題的建議,如下。
現(xiàn)如今我所能看到的最大的安全隱患是JWTs(session 數(shù)據(jù))的本地緩存。然而許多人并未意識(shí)到這些JWTs數(shù)據(jù)本質(zhì)上就等同于用戶名和密碼。如果JWT被黑客復(fù)制,他就可以以你的名義向網(wǎng)站發(fā)送各種請(qǐng)求,而你卻一無(wú)所知。要像對(duì)待信用卡賬號(hào)和密碼一樣來(lái)對(duì)待你的JWTs,絕不要將其存儲(chǔ)在本地。
提出這個(gè)建議的文章很好,并且涵蓋了很多關(guān)于JavaScript本地緩存的重要話題,確實(shí)值得一讀。但遺憾的是,這種關(guān)于JWTs和安全的描述具有誤導(dǎo)性,至少缺少開(kāi)發(fā)者所需要理解的細(xì)微差別。
使用 JWT 本地存儲(chǔ)的立場(chǎng)絕對(duì)是:不要這樣做!你將JWT存儲(chǔ)在哪并不重要,存儲(chǔ)在某個(gè)'安全'的地方并不能保證安全。關(guān)鍵問(wèn)題是,你在JWT中存放了什么信息,你用JWT做什么,去獲取什么?
如果你的回答不包含任何的個(gè)人可識(shí)別(標(biāo)志)信息,或含有最少的個(gè)人可標(biāo)志信息,這樣的話你就可以考慮使用JWT去做你想做的。如果關(guān)于以上問(wèn)題的回答是:存儲(chǔ)他們所有的信用卡信息,那么你應(yīng)該考慮用另外的技術(shù)來(lái)替代JWT。
比如,如果你要實(shí)現(xiàn)在線新聞出版物內(nèi)容收費(fèi),本地存儲(chǔ)的JWTs將是一個(gè)完全可以接受的安全解決方案。你保護(hù)的內(nèi)容是低價(jià)值的,沒(méi)有個(gè)人可標(biāo)志信息,所以黑客對(duì)這些內(nèi)容并不會(huì)感興趣。盡管普通Web用戶沒(méi)有付費(fèi)時(shí)JWT會(huì)打斷(終止)其訪問(wèn)內(nèi)容 — 一個(gè)簡(jiǎn)單的安全需求解決方案。
你會(huì)注意到這種解決安全問(wèn)題的方法并不是那么教條和專制。有才華的開(kāi)發(fā)者傾向于成為教條主義和專制主義者,可能是因?yàn)樗麄兛吹降乃袞|西都是“不好的”,或者至少不夠完美。這有點(diǎn)像當(dāng)年柏拉圖在公元前5世紀(jì)看待雅典時(shí)期的態(tài)度,但像柏拉圖一樣,這種方法可能會(huì)導(dǎo)致解決不好的方案和糟糕的答案。對(duì)于試圖理解某個(gè)話題的人來(lái)說(shuō),這可能是無(wú)益的,特別是如果他們是新手的話。
在處理安全問(wèn)題以避免教條、專制主義和一刀切等問(wèn)題時(shí),這是明智的。這與道德絕對(duì)“不要?dú)⒙尽毕喈?dāng),因?yàn)榘踩婕案嗟募?xì)微差別。
2. 沒(méi)有跟安全性一樣的事物
安全的核心有一個(gè)極大的諷刺,那就是它并不存在。最近Google Chrome在Twitter上宣布,他們將把所有使用HTTP的網(wǎng)站標(biāo)記為“不安全”。他們已經(jīng)在網(wǎng)址欄中將HTTPS網(wǎng)站標(biāo)記為“安全”。
Twitter廣告信息及隱私
這很奇怪,因?yàn)镠TTPS或通過(guò)TLS的HTTP是非常有用的安全增強(qiáng)功能,但不能保證其安全性。這是完全可能的:建立一個(gè)站點(diǎn)并通過(guò)HTTP提供服務(wù),可提供比通過(guò)HTTPS服務(wù)的站點(diǎn)更安全的方式。
Google此舉非常不負(fù)責(zé)任,因?yàn)樗麄儠?huì)使普通網(wǎng)絡(luò)用戶處于危險(xiǎn)而不自知,以至于對(duì)線上行為放松警惕。而這還未涉及HTTPS 連接是如何實(shí)現(xiàn)的,請(qǐng)參見(jiàn)靈活的SSLCloudFlare。將這類連接定義成“安全”或者“不安全”會(huì)產(chǎn)生誤導(dǎo),更為明智的做法是定義為“私人的”或“公共的”。
絕對(duì)的安全并不存在,就算是采用最先進(jìn)的技術(shù)也不能保證。安全性是相對(duì)被保護(hù)的對(duì)象而言的。幾千年來(lái),人類建造了各種各樣的圍墻來(lái)保證安全,但皆非固若金湯。
如果不信,那就找個(gè)伊朗人問(wèn)問(wèn)。憑借以色列人的幫助,美國(guó)在2009年入侵了伊朗名為 Natanz 核設(shè)施,其中或許還有英國(guó)人的幫助?;蛟S你還記得當(dāng)時(shí)Stuxnet 病毒 ,它可是這起事件的罪魁禍?zhǔn)?。那次黑客的特別之處在于,Natanz 核設(shè)施采用的是空氣隙技術(shù),它可能是世界上最安全的設(shè)施之一,但也沒(méi)能阻止美國(guó)人將病毒帶入該設(shè)施從而擾亂伊朗的核計(jì)劃。
如果你對(duì)這個(gè)話題以及類似這樣的故事感興趣,我建議你閱讀Gordon Corera的書(shū)Intercept: The Secret History of Computers and Spies(截?。河?jì)算機(jī)和間諜秘史)。這是一本很棒的書(shū),將為你介紹安全和黑客之類的話題。
良好的安全性需要構(gòu)建一個(gè)高于你所保護(hù)的資產(chǎn)價(jià)值的墻。也就是黑客攻擊你的系統(tǒng)的代價(jià)會(huì)比黑客竊取它之后的價(jià)值更高。這也意味著你的安全性應(yīng)該與你所保護(hù)的內(nèi)容相符。例如,不要在服務(wù)器上使用網(wǎng)閘(air gap)來(lái)保護(hù)從網(wǎng)絡(luò)注冊(cè)表中收集到的一些電子郵件地址,否則這將非常浪費(fèi)金錢。
3. 了解潛在的威脅
在建造你的防火墻時(shí),了解你所面臨的威脅是很重要的。安全威脅可以分解為四個(gè)基本分組:
? Kiddy Scripters(初級(jí)腳本)和自動(dòng)化威脅:參考大多數(shù)WordPress/Joomla hacks。
? 熟練的黑客和黑客組織:匿名,LulzSec
? 有組織犯罪和次要國(guó)家成員:黑手黨,北朝鮮
? 主要國(guó)家成員:美國(guó),中國(guó),俄羅斯,以色列,英國(guó)
大多數(shù)開(kāi)發(fā)人員很少會(huì)處理高于第一級(jí)的任何事情。其原因有兩方面,你必須做一些重要的有財(cái)務(wù)價(jià)值和/或具有顯著的政治價(jià)值的事情才能超越這一級(jí)。這方面的例子包括敏感的政府工作、公司的財(cái)務(wù)方面以及重要協(xié)作意向。
同樣威脅是多樣化的,并不一定與黑客攻擊數(shù)據(jù)有關(guān)。例如,你的組織可能相比于數(shù)據(jù)泄露更容易遭受DDOS攻擊。作為一名開(kāi)發(fā)人員,重要的是要考慮你的組織可能會(huì)如何受到影響,而主要漏洞可能并不總是以財(cái)務(wù)或PII為重點(diǎn),這可能事關(guān)聲譽(yù)。通過(guò)讓你的網(wǎng)站離線以使你的組織遭遇尷尬,這可能會(huì)比竊取你的服務(wù)器上的PII更具價(jià)值。
2014年的Fappening事件是一個(gè)組織未能正確理解威脅的經(jīng)典例子。在這種情況下,Apple未能正確估算他們?cè)?a target="_blank">iCloud系統(tǒng)上的內(nèi)容,因此并沒(méi)有實(shí)施可能限制其損害的安全功能。例如,當(dāng)新設(shè)備或奇怪IP連接到帳戶時(shí)發(fā)送電子郵件。Fappening是一個(gè)邊緣案例,因?yàn)橹皼](méi)有人真正考慮過(guò)名人數(shù)據(jù)的價(jià)值,但它確實(shí)強(qiáng)調(diào)了組織在面臨的威脅時(shí)可能并不總是理智的。
4. 實(shí)現(xiàn)一個(gè)適當(dāng)?shù)慕鉀Q方案
如果你在沒(méi)有正確考慮你所面臨的威脅的情況下實(shí)現(xiàn)通用安全解決方案,則你可能和不使用任何安全措施一樣安全不了多少。
作為開(kāi)發(fā)人員,在實(shí)現(xiàn)任何安全解決方案之前,你必須認(rèn)真考慮你所面臨的威脅。這樣可以實(shí)現(xiàn)一個(gè)相應(yīng)的安全措施。適當(dāng)性并不僅僅是與安全威脅有關(guān),它還涉及到你需要花多少錢。一個(gè)貧窮的國(guó)家不能建造中國(guó)長(zhǎng)城,但如果它理解了這個(gè)威脅并合理地部署它的資源,它就能夠防御之。
-
軟件開(kāi)發(fā)
+關(guān)注
關(guān)注
0文章
597瀏覽量
27318 -
信息安全
+關(guān)注
關(guān)注
5文章
647瀏覽量
38865
原文標(biāo)題:軟件開(kāi)發(fā)人員應(yīng)遵循的四項(xiàng)安全原則
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論