圖解http是一本挺好的協議入門書籍,主要講http協議,在這裏記錄一下學習總結
(因爲在看書的時候記得文字筆記,所以底下會有許多圖片,字醜別嫌棄)
Http的缺點:
1.通信使用明文 2.不驗證通信雙方的身份 3.無法驗證報文的完整性,可能會被篡改報文
加密分類:
1.通信的加密 2.報文內容的加密
Https=Http+加密+認證+完整性保護=Http+SSL/TLS
Https比Http慢:一個原因是通信慢,一個原因是運算處理費時
(SSL是使用最廣泛的網絡安全技術)
SSL:Secure Sockets Layer 安全套接層
加密手段:
1.共享密鑰加密:加密解密用同一個密鑰
2.公開密鑰加密:用兩把密鑰
私鑰保留,公鑰發佈,加密時我方用對方公鑰加密,解密時對方用自己的私鑰解密
兩種密鑰的特點:共享密鑰速度快,公開密鑰速度慢,通常混合使用:
先公開密鑰加密交換共享密鑰,之後用共享密鑰加密
公鑰也不安全,會被僞造怎麼辦:
3.由數字認證機構頒發公鑰證書(這個是真正的安全,除非認證機構的私鑰泄露)
服務器公鑰申請給認證機構做認證:
認證機構用自己的私鑰對申請的服務器公鑰進行數字簽名,並將數字簽名和服務器公鑰綁定生成公鑰證書頒佈給服務器使用,認證機構的公鑰植入瀏覽器(每個瀏覽器在安裝完成後都內部植入了認證機構的公鑰),通過認證機構的公鑰解密可以證實服務器公鑰的真實性
EV SSL證書:證書的一種,可以證明服務器的身份,可以證明該服務器背後的企業的真實性
(瀏覽器訪問使用該類證書的網站,地址欄呈現綠色)
以上說的都是服務器證書,
還有一種客戶端證書:同樣的原理,客戶端公鑰申請給認證機構生成客戶端公鑰證書
這種是收費的,你有N個用戶就要支付給認證機構 N*每個公鑰的費用
Bank一般會搞這個,我們用的U盾存私鑰,公鑰證書在Bank裏
還有一種自認證證書,自己給自己的公鑰做認證,沒什麼安全性
認證:認證客戶端身份
1.BASIC認證,DIGEST認證
(在訪問需要認證的資源時會跳一個彈窗讓你填用戶名和密碼,用戶名和密碼拼接後Base64加密放入請求首部字段Authorization)
2.SSL客戶端認證
就是客戶端公鑰證書驗證,通常會配合表單認證(銀行採用)
3.表單認證
Web頁面的一個登錄頁面,你填寫用戶名,密碼就登錄認證成功
Cookie保存登錄狀態,用加鹽和散列函數保存密碼(防止明文密碼泄露)
(平時幾乎全都是表單認證)
Http協議性能瓶頸:
1.一次http連接只進行一次http請求
2.每次請求由客戶端發起,服務器無法給客戶端推送請求
3.每次都要發送冗長的首部
4.首部未經過壓縮
5.主體並非強制要求壓縮編碼
解決:
Ajax:局部更新頁面內容
Comet:服務器接到請求掛起,有更新的內容才響應
SPDY:從協議層面改善△
WebSocket協議:全雙工通信,基於http,建立WebSocket連接,連接之後服務器可以給客戶端推送消息,可以減少通信量
Http2:爲了解決1.1版本利用率不高的問題,提出了HTTP/2.0版本。增加雙工模式,即不僅客戶端能夠同時發送多個請求,服務端也能同時處理多個請求,解決了隊頭堵塞的問題(HTTP2.0使用了多路複用的技術,做到同一個連接併發處理多個請求,而且併發請求的數量比HTTP1.1大了好幾個數量級);HTTP請求和響應中,狀態行和請求/響應頭都是些信息字段,並沒有真正的數據,因此在2.0版本中將所有的信息字段建立一張表,爲表中的每個字段建立索引,客戶端和服務端共同使用這個表,他們之間就以索引號來表示信息字段,這樣就避免了1.0舊版本的重複繁瑣的字段,並以壓縮的方式傳輸,提高利用率。
另外也增加服務器推送的功能,即不經請求服務端主動向客戶端發送數據。
當前主流的協議版本還是HTTP/1.1版本。
WebDAV:基於萬維網的的分佈式創作和版本控制
是一種客戶端直接對服務器上的文件資源進行管理操作的系統
(我也不知道這是個啥東西)
常見安全攻擊手段:
- 跨站腳本攻擊XXS
- SQL注入攻擊
- OS命令注入攻擊
- HTTP首部注入攻擊
- 郵件首部注入攻擊
- 目錄遍歷攻擊
- 遠程文件漏洞
- 程序設計缺引發的安全漏洞
- 因會話疏忽引發的安全漏洞
- 密碼破譯
- 點擊劫持
- Dos和DDoS
- 後門程序
(這裏具體很多我都不知道是個啥,大家想研究網絡安全還是自行百度和看書學習吧)
___________________________分割線_________________________________