作者:晨鐘暮鼓c
個人微信公眾號:程式猿的月光寶盒
## 1. HTTP相關[2]
1.1Get請求和Post請求的區別
從三個層面來回答:
1.1.1 從HTTP報文層面:
? Get請求將請求資訊放在URL后面,請求資訊和URL之間用問號(?)隔開,多個請求資訊之間用&隔開,形式是鍵值對的形式,且有長度限制.
? Post請求是放在報文體中,想獲得請求資訊必須請求報文,因此,安全性較Get要高一些,但是可以通過抓包工具獲取資訊,所以不是絕對安全,具體還要靠https,沒有長度限制
1.1.2 從資料庫層面:
? Get符合冪等性和安全性,Post不符合
冪等性:
? 對資料庫的一次操作和多次操作獲得的結果是一致的
安全性:
? 對資料庫的操作沒有改變資料庫中的資料
1.1.3 從其他層面上看
? Get可以被快取,被存盤,會被保存在瀏覽器的瀏覽記錄中,以Get方式發送的URL可以保存為瀏覽器書簽,而post不行
1.2 Cookie和Session的區別:
? 兩者產生的原因:HTTP的最大特點:無狀態,每次登陸某網站都要不厭其煩輸入帳號密碼,對此,就產生的Cookie和Session.
1.2.1 Cookie簡介:
? 是由服務器發送給客戶端的特殊資訊,以文本的形式存放在客戶端
? 客戶端再次請求的時候,會把Cookie回發
? 服務器接收到后,會決議Cookie生成 與客戶端相對應的內容
1.2.1.1 Cookie的設定和發送程序
-
客戶端發送http請求到服務端,
-
服務端發送http回應到客戶端,其中包括了Set-Cookie頭部
-
客戶端發送http請求到服務端,包括了Cookie頭部
-
服務器發送http相應到客戶端
1.2.2 Session簡介
服務端的機制,在服務端上保存資訊
決議客戶端請求并操作Session id,按需保存狀態資訊
1.2.2.1 Session的實作方式
1.使用Cookie實作
服務器給每個Session分配一個唯一的JSessionID,并通過Cookie發送給客戶端,當客戶端發送新的請求的時候,將在Cookie頭中攜帶JSessionID,這樣服務器就能找到相對應的Session
2.使用URL回寫實作
? 指服務器在發送給瀏覽器的所有頁面中都攜帶JSessionID的引數,這樣客戶端點擊任何一個連接都會把JSessionID的值傳給服務端
1.2.3 Cookie和Session的區別
1.Cookie資料存放在瀏覽器,Session存放在服務器
2.Session相對Cookie安全
3.若考慮服務器負擔,應當使用Cookie
1.3 HTTP和HTTPS的區別
1.3.1 HTTPS簡介
是一個以安全通行為目的的傳輸協議,是一個安全版的Http
1.3.2 SSL(Security Sockets Layer,安全套接層)
1.為網路通信提供安全及資料完整性的一種安全協議
2.是作業系統對外提供的API,SSL3.0后改名為TLS
那么它如何保護安全及資料完整性?
? 采用身份驗證和資料加密保證網路通信的安全和資料的完整性
1.3.3加密方式
1.對稱加密:
? 加密和解密都使用同一個秘鑰,性能較高,安全性相對不強
2.非對稱加密:
? 加密和解密使用的秘鑰都是不同的,分別稱為公鑰和私鑰,性能較低,安全性超強
3.哈希演算法:
? 將任意長度的資訊轉換為固定長度的值,演算法不可逆(常見的MD5演算法)
4.數字簽名:
? 證明某個訊息或者檔案是從某人發出/認同的
1.3.4Https資料傳輸流程
1.瀏覽器將支持的加密演算法資訊發送給服務器
2.服務器選擇一套瀏覽器支持的加密演算法,以證書的形式回發給瀏覽器
3.瀏覽器驗證證書的合法性,并結合證書公鑰加密資訊發送給服務器
4.服務器使用私鑰解密資訊,驗證哈希,加密回應資訊回發瀏覽器
5.瀏覽器解密回應資訊,并對資訊進行驗證,之后進行加密互動資料
1.3.5 HTTP和HTTPS的區別
1.HTTPS需要到CA申請證書,HTTP不需要
2.HTTPS密文傳輸,HTTP明文傳輸
3.連接方式不同,HTTPS默認使用443埠,http使用80埠
4.HTTPS=HTTP+加密+認證+完整性保護,較HTTP安全
1.3.6HTTPS真的安全嗎
未必
1.瀏覽器默認填充http://,請求需要進行跳轉,有被劫持的風險
2.可以使用HSTS(HTTP Strict Transport Security)優化
以上,計算機網路部分結束
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/5226.html
標籤:其他
上一篇:程式員“求包養”攻略揭秘
