一個Web系統應該透過HTTPS加密傳輸協定來輸送Client與Web Server之間的敏感性資料。 而HTTPS 協定是透過SSL/TLS 協定為基礎來達成加密傳輸目的,執行HTTPS 協定的安全性測試時,尤有一些要點需要注意。

  1. 驗証Server的Certificate 有效性

使用HTTPS 協定時,Server端會主動傳送Certificate數位憑證給Client端做驗證,如果Certificate有安全疑慮,Web Browser將會出現憑證不安全的警告訊息。

通常Browser會對Certificate做如下驗證:

  1. Certificate的Issuer發給者是否存在Browser中Trusted CA(憑證授權中心)列表中,如果該Certificate的CA不是可受信任的機構,Browser將會出現警示。
  2. Certificate必需在有效期限內,若Expire則會出現警告。
  3. Certificate中所指定的網站域名必需與Web Server的網站域名一致,例如憑證由example.com發送給Browser,則憑證內必需指定該憑證是給secure.example.com使用,否則一樣會發出警告。

當Server端Certificate不安全時會看到Browser發出警告

 

  1. SSL 強化

SSL 協定由早期的SSL發展到TLS已經有許多不同版本,要注意SSL版本的安全性是否足夠。

  1. 不要使用SSL V2 弱協定。
  2. 不使用弱加密,加密密碼長度應該>=128 bits
  3. X.509 Certificate的密鑰長度必須夠強鍵(RSA or DSA 密鑰長度至少1024 bits)。
  4. X.509 Certificate使用安全的Hash演算法作簽章。(不使用MD5)

 

  1. 使用 HTTP強制安全傳輸(HSTS, HTTP Strict Transports Security)

HSTS強制網站在一定時間內必需由HTTP轉為HTTPS協定,即在Web Server傳輸的HTTP Header中應該包含底下表頭,

Strict-Transport-Security: max-age=60000(Second); includeSubDomains

=>

max-age: 網站若收到HTTP請求,應該max-age時間範圍內轉為HTTPS.

includeSubDomains: 網站的所有sub domain 皆套用HSTS機制。

 

  1. Session Cookie應該加上Secure 安全標識

SessionID 或 JSESSIONID 常常存在cookie中傳輸,為避免Session ID洩漏,在SessionID或JSESSIONID的Cookie設定中必需加上Secure 安全標識,只有在HTTPS協定中該Cookie才被傳遞。

 

  1. HTTP與HTTPS 協定不應該同時存在網站站點或頁面。

如此才可以避免網站訊息洩漏而遭到SSL Strip/Surf Jacking/MITM中間人攻擊 等Session 劫持利用攻擊。

 

2018年8月19日星期日

arrow
arrow

    jackterrylau 發表在 痞客邦 留言(0) 人氣()