安全的本質是信任問題。web
經過一個安全檢查的過程,能夠梳理未知的人或物,使其變得可信任。被劃分出來的具備不一樣信任級別的區域,咱們成爲信任域;劃分兩個不一樣信任域之間的邊界,咱們成爲信任邊界。算法
數據從高等級的信任域流向低等級的信任域,是不須要通過安全檢查的;數據從低等級的信任域流向高等級的信任域,則須要通過信任邊界的安全檢查。安全
安全三要素分別是機密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。ide
機密性要求保護數據內容不能泄露,加密是實現機密性的常見手段。web安全
完整性要求保護數據內容是完整的、沒有被篡改的。 常見的保證完整性的手段是 數字簽名。性能
可用性要求保護資源是「隨需而得」。DoS(Denial of Service)攻擊針對的就是安全元素的可用性。加密
安全評估能夠又如下四個部分組成: 資產等級劃分、威脅分析、風險分析、確認解決方案。設計
資產等級劃分是全部工做的基礎,明確咱們目標是什麼,要保護什麼。orm
互聯網安全的核心問題,是數據安全的問題。token
在這個過程當中,咱們須要明確咱們保護的核心數據是什麼,並對數據的安全等級進行劃分,來區分出不一樣數據的重要程度。
在完成等級劃分後,接下來就是劃分信任域和信任邊界了。在這個階段,能夠根據數據安全等級的不一樣,劃分不一樣的信任域,不一樣信任域之間的數據流動必須通過安全邊界的檢查。
在安全領域,咱們把可能形成危害的來源成爲威脅(Threat),把可能會出現的損失成爲風險(Risk)。
威脅分析就是把全部可能的威脅都找出來。具體怎麼找呢? 通常是採用頭腦風暴法。固然也有一種比較科學的方法,就是威脅建模。
下面咱們來看最先有微軟提出的 STRIDE威脅建模。
STRIDE是由六個字母的首字母縮寫,咱們分析威脅的時候,能夠從如下六個方面考慮:
威脅 | 定義 | 應對的安全屬性 |
---|---|---|
Spoofing(假裝) | 冒充他人身份 | 認證 |
Tampering(篡改) | 修改數據或代碼 | 完整性 |
Repudiation(抵賴) | 否定作過的事情 | 不可抵賴性 |
InformationDisclosure(信息泄露) | 機密信息泄露 | 機密性 |
Denial of Service(拒絕服務) | 拒絕服務 | 可用性 |
Elevation of Privilege(提高權限) | 未經受權得到許可 | 受權 |
在進行威脅分析的時候,要儘量的不遺漏威脅。
影響風險高低的因素,除了形成損失的大小外,還須要考慮發生的可能性。
安全評估的產出物,就是安全方案。安全方案要有必定的針對性,這種針對性是由等級劃分、威脅分析、風險分析等階段的結果給出的。
安全是爲產品的發展和成長保駕護航的,咱們不能用「粗暴」的方案去阻礙產品的正常發展。
沒有不安全的業務,只有不安全的實現方式。
好的安全方案應該是對用戶透明的,儘量不要改變用戶的使用習慣。
好的安全方案應該有如下特色:
簡單來講,黑名單就是名單上的是被禁止的,不在名單上的均可被信任;白名單正好相反,名單上的可被信任,不在名單上的都不可信任。
通常狀況下,最好是使用白名單,這樣的方案雖然有時候會比較麻煩,但不失爲一種謹慎的方案。
白名單也有不太好的地方,前面咱們說到「安全問題的本質是信任問題,安全方案也是基於信任來作的」,白名單的策略,是基於白名單可被信任的基礎來的,若是白名單容易被篡改,那麼這個安全就無從談起了。
最小權限原則要求系統只授予必要的權限,而不是過分受權。
這就要去咱們認真梳理業務須要的權限,並細分權限。在受權的時候不妨反問下: 這個權限確實是必須的嗎?
縱深防護包含兩層含義:首先,要在不一樣的層面、不一樣方面實施安全方案,避免出現疏漏,不一樣安全方案之間要互相配合,構成一個總體;其次,要作正確的地方作正確的事情,即:在解決根本問題的地方實施針對性的方案。
這一原則普遍使用 各類因爲「注入」引起的問題。
web安全中,由注入引發的問題比比皆是: XSS、SQL Injection、CRLFInjection,X-Path Injection等
前面介紹的幾條原則: Secure By Default, 是時刻要牢記的總則;縱深防護, 是要更全面、正確的看待問題;數據和代碼分離,是從漏洞成因上看問題; 記下來的 不可預測原則,則是從客服攻擊方法的角度看問題。
不可預測性,就是不讓咱們數據有規律,從而加大攻擊的難度,甚至使得攻擊方法失效。
好比說有的博客會用順序遞增的數字來做爲文章的惟一標識,這樣的話只有知道一篇文章的id就能夠推測出其餘文章的id。。
還有在CSRF防護技術中,一般會使用一個隨機的token來防護。
不可防護性每每須要用到加密算法、隨機數算法、哈希算法等。好好使用這條原則,在設計安全方案的時候每每會事半功倍。