《圖解HTTP》閱讀筆記(下)

Accumulate_HangZhou發表於2018-12-22

本篇是《圖解HTTP》閱讀筆記(下),主要是http安全相關的內容。

第7章 確保Web安全的HTTPS

#HTTP的缺點

1.通訊使用明文(不加密),內容可能會被竊聽
2.不驗證通訊方的身份,因此有可能遭遇偽裝
3.無法證明報文的完整性,所以有可能已經遭到篡改

#加密處理防止被竊聽

加密的方式大概有兩種
1.通訊的加密,也就是通過SSL或TLS的組合使用(注:TSL是以SSL為原型開發的協議,有時會統一稱改協議為SSL),將整個通訊線路進行加密處理。這需要客戶端與伺服器建立起安全的通訊線路之後,才能開始通訊。
2.內容的加密,就是對HTTP協議傳輸的內容本身進行加密。為了做到內容的加密,前提是要求客戶端和伺服器端同時具備加密和解密的機制。

#使用證書驗證通訊方身份

在HTTP協議通訊時,由於不存在確認通訊方的步驟,任何人都可以發起請求。另外,伺服器只要接收到請求,不管對方是誰都會返回一個響應。這就會帶來通訊雙方身份都有可能被偽裝的問題。
SSL協議提供了一種稱為證書的手段,用於確定通訊的雙方。證書由值得信任的第三方機構頒發。通過證書,證明通訊方就是意料中的伺服器;客戶端持有證書,即可完成個人身份的確認。

#報文完整性的保證

通常,我們使用兩種方式確保報文的完整性:
a.使用MD5和SHA-1等雜湊值校驗的方式;
b.用數字簽名的方式確認檔案
但是這些方式都無法百分比保證去人結果的正確,PGP和MD5本身被改寫,使用者是無法意識到的。HTTPS可以比較好的解決這個問題。

#HTTPS

HTTPS的組成是:HTTP+加密+認證+完整性保護 (解決HTTP的三個主要問題)
也就是說,我們把新增了加密以及認證機制的HTTP稱為HTTPS(HTTP Secure)
通常,HTTP直接和TCP通訊,當使用SSL時,則變成先和SSL通訊,然後由SSL和TCP通訊。SSL是獨立於HTTP的協議,是當今應用最為廣泛的網路安全技術。

#加密的方式

1.共享金鑰加密
也就是加密和解密使用同一個金鑰的方式。過程是這樣的:傳送端使用金鑰對內容進行加密,然後將加密過的內容和金鑰,一起傳送給接收方。
這就存在一個明顯的問題了,如果通訊被監聽,金鑰就可能會落入攻擊者之手,加密就失去了意義。
2.公開金鑰加密
公開金鑰加密使用一對非對稱的金鑰:私有金鑰,公開金鑰。
公開金鑰用於對內容加密,傳送密文的一方使用對方的公開金鑰進行加密處理,對方收到被加密的資訊後,使用私有金鑰進行解密。這種方式不需要傳送用於解密的私有金鑰,可以避免金鑰的洩露。

#混合使用加密方式

既然公開金鑰加密方式優於共享金鑰加密方式,那HTTPS使用的是哪種呢?
HTTPS使用的是兩者並用的混合加密機制。因為公開金鑰加密會消耗更多的CPU和記憶體,消耗更多的資源,處理速度要慢。合理的方式是,在交換金鑰環節使用公開金鑰加密方式,之後的建立通訊交換報文節點,則採用共享金鑰加密的方式。

#證書認證的方式和原理

我們已經瞭解了加密的方式和原理,那麼證書是怎麼確認通訊雙發身份的呢。
首先伺服器運營人員向數字證書認證機構申請公開金鑰,數字認證機構確認申請者身份後,會對申請的公開金鑰做數字簽名,然後分配給申請者這個已經簽名的公開金鑰,最後將這個公開金鑰放入到共鑰證書後繫結在一起。
通訊的時候,伺服器將認證機構頒發的共鑰證書傳送給客戶端,客戶端使用數字機構認證的公開金鑰對那張證書上的數字簽名進行驗證,驗證通過後,可以確認兩件事情:a.伺服器的公開金鑰是真實有效的數字機構認證的;b.伺服器的公開金鑰是值得信賴的。
當然,多數瀏覽器會事先在瀏覽器內部植入常用認證機構的公開金鑰。

第8章 確認訪問使用者身份的認證

某些web頁面只想讓特定的人瀏覽,就需要對使用者的身份進行認證。核對的資訊通常有:
1.密碼:只有本人才知道的字串資訊
2.動態令牌:僅限於本人持有的裝置內顯示的一次性密碼
3.數字認證:僅限本人持有的資訊
4.生物認證:指紋、虹膜等
5.IC卡等
HTTP使用的認證方式有: 1.BASIC認證
2.DIGEST認證
3.SSL客戶端認證
4.FormBase認證

第9章 基於HTTP的功能追加協議

#SPDY
#AJAX
#Comet
#WebSocket
#HTTP/2.0
#WebDAV

第10章 構建web內容的技術

#HTML(HyperText Markup Language)

超文字標記語言。超文字是一種文件系統,可將文件中任意位置的資訊與其它資訊(文字或圖片)建立關聯,即超連結文字。

#CSS(Cascading Style Sheets)

CSS的理念就是讓文件的結構和設計分離,達到解耦的目的。

#動態HTML(Dynamic HTML)

指使用客戶端指令碼語言將靜態的HTML內容變成動態的技術的總稱。

#DOM

DOM是用於操作HTML文件和XML文件的API。

第11章 Web的攻擊技術

#因輸出值轉義不完全引發的安全漏洞

1.跨站指令碼攻擊(Cross-Site Scripting,XSS)
2.SQL隱碼攻擊
3.OS命令注入攻擊
4.HTTP首部注入攻擊
5.郵件首部注入攻擊
6.目錄遍歷攻擊
7.遠端檔案包含漏洞

#因設定或設計上的缺陷引發的安全漏洞

1.強制瀏覽
2.不正確的錯誤資訊處理
3.開放重定向

#因會話管理疏忽引發的安全漏洞

1.會話劫持
2.會話固定攻擊
3.跨站點請求偽造(Cross-Site Request Forgeries,CSRF)

#其它安全漏洞

1.密碼破解
2.點選劫持
3.DoS攻擊
4.後門程式

相關文章