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

第三屆大會(huì)回顧第7期 | 面向OpenHarmony大規(guī)模代碼的路徑敏感的稀疏值流分析

知識(shí)分享 | 敏捷方法在基于模型的軟件開發(fā)項(xiàng)目中的應(yīng)用

嵌入式軟件開發(fā)常用的軟件有哪些?
華為攜手產(chǎn)業(yè)伙伴榮獲四項(xiàng)大獎(jiǎng)
NanoEdge AI Studio 面向STM32開發(fā)人員機(jī)器學(xué)習(xí)(ML)技術(shù)

IAR發(fā)布云端平臺(tái),助力現(xiàn)代嵌入式軟件開發(fā)團(tuán)隊(duì)
中興通訊榮獲GTI Awards 2025四項(xiàng)大獎(jiǎng)
英特爾FPGA AI套件軟件2024.3版本的主要亮點(diǎn)
嵌入式系統(tǒng)信息安全概述
亞馬遜云科技發(fā)布Amazon Q Developer,重塑軟件開發(fā)與運(yùn)營
我國軟件開發(fā)者數(shù)量超過940萬
晶科能源連獲四項(xiàng)雇主榮譽(yù)
MSPDebugStack開發(fā)人員指南

評(píng)論