天天看點

運維安全總結安全原則黃金法則密碼學身份認證Web安全

運維安全

  • 安全原則
  • 黃金法則
  • 密碼學
    • 對稱加密算法
    • 非對稱加密算法
    • 雜湊演算法
  • 身份認證
    • 對外認證
    • 對内認證
    • 單點登入
      • CAS
      • JWT
      • OAuth
      • OpenID
      • 小記
  • Web安全
    • XSS攻擊
    • SQL注入
      • 修改where子句
      • 執行任意語句

安全原則

機密性(Confidentiality)、完整性(Integrity)、可用性(Availability),簡

稱為 CIA 三元組,是安全的基本原則。理論上來說,一個完整的安全保障體系,應該充分

考慮到所有的 CIA 原則。當然,實際情況中,我們會根據企業需求,對安全在這三個方向

上的投入做取舍。我們平時在評判一個企業的安全水準時,也會分别從這三個方向進行考

量。

黃金法則

黃金法則:在使用者操作的各個環節中,我們所需要采取的安全政策。黃金法則的核

心内容包括三部分:認證、授權、審計。大部分情況下,事前防禦屬于認證,事中防禦屬于

授權,事後防禦屬于審計。

密碼學

建議:對稱加密用 AES-CTR、非對稱加密用 ECC、雜湊演算法用 SHA256。

對稱加密算法

發送方使用加密算法和密鑰生成消息對應的密文;

接收方想要閱讀消息,需要使用對應的解密算法和同樣的密鑰解密;

運維安全總結安全原則黃金法則密碼學身份認證Web安全

常見的經典對稱加密算法有 DES、IDEA、AES、國密 SM1 和 SM4。

一般情況下,選取 AES128 進行加解密運算,就能獲得較高的安全性和性能。

非對稱加密算法

非對稱加密中加密和解密使用不同的密鑰。

發送方使用公鑰對資訊進行加密,接收方收到密文後,使用私鑰進行解密。

運維安全總結安全原則黃金法則密碼學身份認證Web安全

常見的非對稱加密算法:RSA(性能快,用的較多)、ECC 和國密 SM2

雜湊演算法

常見算法:MD5 、SHA 算法計算一個唯一的 id

除了提供唯一的 id,其更大的利用價值還在于它的不可逆性。當使用者注冊,送出賬号密碼時,作為一個安全的應用,通常使用雜湊演算法存儲密碼。

身份認證

對外認證

對外認證通常是使用者直接通路業務,是單一場景認證。外部的通常使用密碼結合手機短信等認證

對内認證

對内認證是指内部系統之間的通路,如git、mysql等。為了防止多系統帶來的賬号切換和安全性問題,通常使用sso單點登入解決身份認證問題

單點登入

典型的單點登入方式:CAS (Central Authentication Service,集中式認證服務)流程、JWT、OAuth 和 OpenID。

CAS

CAS 是一個開源的單點登入架構,它不屬于某一種單點登入的實作方式,而是提供了一整套完整的落地方案。

運維安全總結安全原則黃金法則密碼學身份認證Web安全

JWT

JWT(JSON Web Token)是一種非常輕量級的單點登入流程。它會在用戶端儲存一個憑證資訊,之後在你每一次登入的請求中都帶上這個憑證,将其作為登入狀态的依據。JWT的好處在于,不需要應用服務端去額外維護 Cookie 或者 Session 了。但是,正是因為它将登入狀态落到了用戶端,是以我們無法進行登出等操作了。

OAuth

OAuth(Open Authorization)的主要特點是授權,也是我們通常用 QQ、微信登入其他應用時所采用的協定。通過 OAuth,使用者在完成了認證中心的登入之後,應用隻能夠驗證使用者确實在第三方登入了。但是,想要維持應用内的登入狀态,應用還是得頒發自己的登入憑證。這也就是為什麼 QQ 授權後,應用還需要綁定你的手機号碼。這也就意味着,應用是基于 QQ 的資訊建立了一個自身的賬号。

OpenID

OpenID(Open Identity Document)和 OAuth 的功能基本一緻。但是,OpenID 不提供授權的功能。最常見的,當我們需要在應用中使用微信支付的時候,應用隻需要收集支付相關的資訊即可,并不需要擷取使用者的微信頭像。

小記

JWT 适用範圍廣,在單點登入的選取上面,如果想要将使用者資訊做統一管理,選擇它最為簡單;

如果認證中心隻是被用來維護賬号密碼,由業務去維護使用者所綁定的其他手機等資訊,那麼,采用 OAuth 更合适。

Web安全

XSS攻擊

XSS工具的原理是誘導使用者點選連結,執行js腳本,竊取使用者資訊,仿冒使用者操作。

分類

反射型:浏覽器–後端–浏覽器

基于DOM:URL–浏覽器

持久型:浏覽器–後端–資料庫–後端–浏覽器

防護

CSP(Content Security Policy,内容安全政策)在服務端傳回的 HTTP header 裡面添加一個 Content-Security-Policy 選項,然後定義資源的白名單域名。浏覽器就會識别這個字段,并限制對非白名單資源的通路。

SQL注入

通過構造一些惡意的輸入參數,在應用拼接 SQL 語句的時候,去篡改正常的 SQL 語意,進而執行黑客所控制的 SQL 查詢功能。

修改where子句

如下列sql
select * from users where username='' and password = ''
修改為
select * from users where username='' and password = '' or password = ''
則pasword字段為True,即可繞過密碼登入
           

執行任意語句

如下sql
insert into(username, password) values ('zzd', '111');
修改為
insert into users (username, password) values ('zzd', '111'); select * from users;
通過;号分割即可執行任意sql了
           

防護

使用ORM替代直接使用sql可以有效的防止此類問題

繼續閱讀