網站用的是https抓包是明文傳輸,為什么能看到https報文的明文?
-
https其實就是 http + SSL/TLS 兩種協議的合體。http協議是應用層協議,而SSL/TLS是傳輸層協議。
-
那問題的答案就很清晰了,在你能夠在瀏覽器上面查看網頁之前,報文經過了你的傳輸層,SSL/TLS已經對報文進行了解密處理(快遞已經開包)。之后所以不管是在瀏覽器上呈現,還是你按F12查看源碼,都是http協議的事情(快遞里面的東西都已經到你手上了,對你而言不會再有啥秘密)。
-
https保證的是傳輸過程中第三方抓包看到的是密文。客戶端和服務端,無論如何都可以拿到明文。
https(ssl)加密是發生在應用層與傳輸層之間,所以在傳輸層看到的數據才是經過加密的,而我們捕捉到的http post,是應用層的數據,此時還沒有經過加密。這些明文信息,其實就是你的本地數據。
加密層位於http層(應用層)和tcp層(傳輸層)之間, 所以抓到的http層的數據並沒有加密。 同理, 在后台接收端, 經歷解密后, 到達http層的數據也是明文。 要注意, https不是對http報文進行加密, 而是對業務數據進行加密, 然后用http傳輸。所以需要在客戶端對密碼進行MD5加密處理才行。
- https抓包的原理就是抓包程序將服務器返回的證書截獲 ,然后給客戶端返回一個它自己的證書;
- 客戶端發送的數據抓包程序用自己的證書解密,然后再用截獲的證書加密,再發給服務器 所以你在能看到明文。
- 密文是針對https兩端以外其他路徑而言,你作為https鏈接的兩端,當然可以看到明文 。
HTTPS是通過一次非對稱加密算法(如RSA算法)進行了協商密鑰的生成與交換,然后在后續通信過程中就使用協商密鑰進行對稱加密通信,之所以要使用這兩種加密方式的原因在於非對稱加密計算量較大,如果一直使用非對稱加密來傳輸數據的話,會影響效率。
總結
HTTPS
不是單獨的一個協議,它是HTTP
+SSL/TLS
的組合;TLS
是傳輸層安全性協議,它會對傳輸的HTTP
數據進行加密,使用非對稱加密和對稱加密的混合方式;- 抓包工具的原理就是“偽裝“,對客戶端偽裝成服務器,對服務器偽裝成客戶端;
- 使用抓包工具抓
HTTPS
包必須要將抓包工具的證書安裝到客戶端本地,並設置信任; HTTPS
數據只是在傳輸時進行了加密,而抓包工具是接收到數據后再重新加密轉發,所以抓包工具抓到的HTTPS
包可以直接看到明文;- 所有,可以采取對密碼等敏感字段,進行混淆加密編碼后傳輸,比如前端hash后
加鹽
等等
參考:
https://www.cnblogs.com/tester-xt/p/13174279.html
https://blog.csdn.net/stpeace/article/details/78073288
https://blog.csdn.net/kongsuhongbaby/article/details/103210955