無狀態:協議對客戶端沒有狀態儲存,對事物處理沒有「記憶」能力,比如訪問乙個**需要反覆進行登入操作
無連線:http/1.1之前,由於無狀態特點,每次請求需要通過tcp三次握手四次揮手,和伺服器重新建立連線。比如某個客戶機在短時間多次請求同乙個資源,伺服器並不能區別是否已經響應過使用者的請求,所以每次需要重新響應請求,需要耗費不必要的時間和流量。
基於請求和響應:基本的特性,由客戶端發起請求,服務端響應
簡單快速、靈活
通訊使用明文、請求和響應不會對通訊方進行確認、無法保護資料的完整性
基於http協議,通過ssl或tls提供加密處理資料、驗證對方身份以及資料完整性保護
通過抓包可以看到資料不是明文傳輸,而且https有如下特點:
內容加密:採用混合加密技術,中間者無法直接檢視明文內容
驗證身份:通過證書認證客戶端訪問的是自己的伺服器
保護資料完整性:防止傳輸的內容被中間人冒充或者篡改
什麼是ssl(安全套接字層)
https的整體過程分為證書驗證和資料傳輸階段,具體的互動過程如下:
① 證書驗證階段
瀏覽器發起 https 請求
服務端返回 https 證書
客戶端驗證證書是否合法,如果不合法則提示告警
② 資料傳輸階段
當證書驗證合法後,在本地生成隨機數
通過公鑰加密隨機數,並把加密後的隨機數傳輸到服務端
服務端通過私鑰對隨機數進行解密
服務端通過客戶端傳入的隨機數構造對稱加密演算法,對返回結果內容進行加密後傳輸
這裡引申兩個問題:
在 https 的場景中只有服務端儲存了私鑰,一對公私鑰只能實現單向的加解密,所以 https 中內容傳輸加密採取的是對稱加密,而不是非對稱加密。
http 協議被認為不安全是因為傳輸過程容易被監聽者勾線監聽、偽造伺服器,而 https 協議主要解決的便是網路傳輸的安全性問題。
首先我們假設不存在認證機構,任何人都可以製作證書,這帶來的安全風險便是經典的「中間人攻擊」問題。
「中間人攻擊」的具體過程如下:
1、本地請求被劫持(如dns劫持等),所有請求均傳送到中間人的伺服器
2、中間人伺服器返回中間人自己的證書
3、客戶端建立隨機數,通過中間人證書的公鑰對隨機數加密後傳送給中間人,然後憑隨機數構造對稱加密對傳輸內容進行加密傳輸
4、此時的隨機數是通過中間人的證書進行加密的,而中間人有自己的私鑰,所以可以通過對稱加密演算法進行內容解密
5、中間人以客戶端的請求內容再向正規**發起請求
6、因為中間人與伺服器的通訊過程是合法的,正規**通過建立的安全通道返回加密後的資料
7、中間人憑藉與正規**建立的對稱加密演算法對內容進行解密
8、中間人通過與客戶端建立的對稱加密演算法對正規內容返回的資料進行加密傳輸
9、客戶端通過與中間人建立的對稱加密演算法對返回結果資料進行解密
由於缺少對證書的驗證,所以客戶端雖然發起的是 https 請求,但客戶端完全不知道自己的網路已被攔截,傳輸內容被中間人全部竊取。
1. 證書包含什麼資訊?
頒發機構資訊
公鑰公司資訊
網域名稱有效期
指紋……
2. 證書的合法性依據是什麼?
首先,權威機構是要有認證的,不是隨便乙個機構都有資格頒發證書,不然也不叫做權威機構。另外,證書的可信性基於信任制,權威機構需要對其頒發的證書進行信用背書,只要是權威機構生成的證書,我們就認為是合法的。所以權威機構會對申請者的資訊進行審核,不同等級的權威機構對審核的要求也不一樣,於是證書也分為免費的、便宜的和貴的。
3. 瀏覽器如何驗證證書的合法性?
a、當客戶端收到這個證書之後,使用本地配置的權威機構的公鑰對證書進行解密得到服務端的公鑰和證書的數字簽名,數字簽名經過ca公鑰解密得到證書資訊摘要。
b、然後證書簽名的方法計算一下當前證書的資訊摘要,與收到的資訊摘要作對比,如果一樣,表示證書一定是伺服器下發的,沒有被中間人篡改過。因為中間人雖然有權威機構的公鑰,能夠解析證書內容並篡改,但是篡改完成之後中間人需要將證書重新加密,但是中間人沒有權威機構的私鑰,無法加密,強行加密只會導致客戶端無法解密,如果中間人強行亂修改證書,就會導致證書內容和證書簽名不匹配。
https 的資料是加密的,常規下抓包工具**請求後抓到的包內容是加密狀態,無法直接檢視。
但是,正如前文所說,瀏覽器只會提示安全風險,如果使用者授權仍然可以繼續訪問**,完成請求。因此,只要客戶端是我們自己的終端,我們授權的情況下,便可以組建中間人網路,而抓包工具便是作為中間人的**。通常 https 抓包工具的使用方法是會生成乙個證書,使用者需要手動把證書安裝到客戶端中,然後終端發起的所有請求通過該證書完成與抓包工具的互動,然後抓包工具再**請求到伺服器,最後把伺服器返回的結果在控制台輸出後再返回給終端,從而完成整個請求的閉環。
既然 https 不能防抓包,那 https 有什麼意義?
https 可以防止使用者在不知情的情況下通訊鏈路被監聽,對於主動授信的抓包操作是不提供防護的,因為這個場景使用者是已經對風險知情。要防止被抓包,需要採用應用級的安全防護,例如採用私有的對稱加密,同時做好移動端的防反編譯加固,防止本地演算法被破解。
以下用簡短的q&a形式進行全文總結:
q: https 為什麼安全?
a: 因為 https 保證了傳輸安全,防止傳輸過程被監聽、防止資料被竊取,可以確認**的真實性。
q: https 的傳輸過程是怎樣的?
a: 客戶端發起 https 請求,服務端返回證書,客戶端對證書進行驗證,驗證通過後本地生成用於改造對稱加密演算法的隨機數,通過證書中的公鑰對隨機數進行加密傳輸到服務端,服務端接收後通過私鑰解密得到隨機數,之後的資料互動通過對稱加密演算法進行加解密。
q: 為什麼需要證書?
a: 防止」中間人「攻擊,同時可以為**提供身份證明。
q: 使用 https 會被抓包嗎?
a: 會被抓包,https 只防止使用者在不知情的情況下通訊被監聽,如果使用者主動授信,是可以構建「中間人」網路,**軟體可以對傳輸內容進行解密。
jmeter之介面測試(http介面測試)
基礎知識儲備 一 了解jmeter介面測試請求介面的原理 客戶端 傳送乙個請求動作 伺服器響應 返回客戶端 客戶端 傳送乙個請求動作 jmeter 伺服器 伺服器 jmeter 伺服器 伺服器 二 了解基礎介面知識 1 什麼是介面 前端與後台之間的橋梁 資料傳輸的通道,就是乙個函式 2 什麼階段做介...
網路知識之http請求
它定義了客戶端和伺服器之間互動的資訊內容和步驟。客戶端解析url後傳送請求訊息 伺服器 解析請求訊息,完成工作,包裝結果為響應訊息 反饋響應訊息給瀏覽器 瀏覽器顯示資料 對什麼 uri,一條請求訊息只能寫乙個uri 進行怎樣的操作 方法,想讓web伺服器完成的工作 有時候會有資料 post方法時 表...
測試開發之HTTP基礎
www的概念 world wide web 全球資訊網 乙個大規模的,聯機式的資訊儲藏所。url的一般格式 協議 主機 埠號 路徑 什麼是 http 超文字傳輸協議 在客戶程式 如瀏覽器 與www伺服器程式之間進行互動使用的協議 目的是保證客戶機與伺服器之間的通訊。http 的工作方式是客戶機與伺服...