https加密get參數
① 怎麼正確理解 HTTPS 的加密
HTTPS協議在通信時,首先會採用公鑰加密的方式,把密鑰進行公鑰加密,然後傳輸給伺服器,伺服器使用私鑰解密出密鑰後,客戶端和伺服器即可建立起安全的訪問通道。在接下來的通信就會採用速度更快的共享密鑰加密的方式進行數據傳輸。這樣HTTPS協議就既擁有公鑰加密的安全性,同時也擁有了通用加密的高速的兩個優點。
對稱加密:加密和解密用同一個密鑰,客戶端對數據加密,服務端解密拿到數據。
非對稱加密:使用公鑰和私鑰,公鑰加密的內容只能私鑰解開,私鑰加密的內容所有公鑰都能解開;私鑰只保存在伺服器端,公鑰可以發送給所有客戶端,可以保證客戶端通過公鑰加密的內容中間人無法破解。
② 以https方式請求url,會對get參數進行加密嗎
SSL應該是在TCP層和HTTP層之間的,會對傳輸的數據進行加密,針對的是傳輸過程的安全。
具體的過程大概是: 客戶端輸入 - 加密 - 傳輸給伺服器 - 服務解密器處理 - 加密 - 回傳個客戶端 - 客戶端解密 - 呈現出來。
至於firebug之類的瀏覽器調試工具,因為他們得到的是客戶端加密之前/解密之後的數據,因此是明文的。
比如你用https協議站點輸入用戶名密碼,傳輸的過程中是加密的。 當然你不會輸入的時候讓其他人在你的瀏覽器用firebug查看你的輸入吧。
③ HTTPS 加密了什麼內容
一般來說,HTTPS 主要用途有三個:一是通過證書等信息確認網站的真實性;二是建立加密的信息通道;三是數據內容的完整性。
那麼加密的信息通道又加密了哪些信息呢?
簽發證書的 CA 中心會發布一種權威性的電子文檔——數字證書,它可以通過加密技術(對稱加密與非對稱加密)對我們在網上傳輸的信息進行加密,比如我在 Pornhub 上輸入:
賬號:cbssfaw
密碼:123djaosid
可是這個數據被黑客攔截盜竊了,那麼加密後,黑客得到的數據可能就是這樣的:
賬號:…≤˙
密碼:§
最後一個就是驗證數據的完整性,當數據包經過無數次路由器轉發後會發生數據劫持,黑客將數據劫持後進行篡改,比如植入羞羞的小廣告。開啟HTTPS後黑客就無法對數據進行篡改,就算真的被篡改了,我們也可以檢測出問題。
對稱加密與非對稱加密
對稱加密
對稱加密是指加密與解密的使用同一個密鑰的加密演算法。小編初中的時候傳紙條使用了同一套加密密碼,所以我用的加密演算法就是對稱加密演算法。
目前常見的加密演算法有:DES、AES、IDEA等
非對稱加密
非對稱加密使用的是兩個密鑰,公鑰與私鑰,我們會使用公鑰對網站賬號密碼等數據進行加密,再用私鑰對數據進行解密。這個公鑰會發給查看網站的所有人,而私鑰是只有網站伺服器自己擁有的。
目前常見非對稱加密演算法:RSA,DSA,DH等。
HTTPS=數據加密+網站認證+完整性驗證+HTTP
通過上文,我們已經知道,HTTPS 就是在 HTTP 傳輸協議的基礎上對網站進行認證,給予它獨一無二的身份證明,再對網站數據進行加密,並對傳輸的數據進行完整性驗證。
HTTPS 作為一種加密手段不僅加密了數據,還給了網站一張身份證。
實現HTTPS,可以淘寶:Gworg 獲取HTTPS加密協議。
④ HTTPS 到底加密了些什麼內容
https其實是有兩部分組成:http + SSL / TLS,也就是在http上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密後的數據。具體是如何進行加密,解密,驗證的,且看下圖。
1. 客戶端發起https請求
客戶端發起https請求就是指用戶在瀏覽器里輸入一個https網址,然後連接到server的443埠。
2. 伺服器端的配置
採用https協議的伺服器必須要有一套SSL數字證書,需要向CA組織(如WoSign沃通CA)申請。這套SSL證書其實就是一對公鑰和私鑰。如果對公鑰和私鑰不太理解,可以想像成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因為只有你一個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。
3. 傳送證書
這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,證書過期時間等等。
4. 客戶端解析證書
這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成一個隨機值。然後用證書對該隨機值進行加密。就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。
5. 傳送加密信息
這部分傳送的是用SSL證書加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了。
6. 服務段解密信息
服務端用私鑰解密後,得到了客戶端傳過來的隨機值(私鑰),然後把內容通過該值進行對稱加密。所謂對稱加密就是,將信息和私鑰通過某種演算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密演算法夠彪悍,私鑰夠復雜,數據就夠安全。
7. 傳輸加密後的信息
這部分信息是服務段用私鑰加密後的信息,可以在客戶端被還原。
8. 客戶端解密信息
客戶端用之前生成的私鑰解密服務段傳過來的信息,於是獲取了解密後的內容。整個過程第三方即使監聽到了數據,也束手無策。
⑤ iOS開發之HTTPS連接GET請求實現Body傳遞參數
iOS開發中的HTTP網路請求我們一般採用AFNetWorking進行,很好用很強大毋庸置疑……但是在需求面前總會有不一般的情況。
如果你千辛萬苦找到了這一篇,比較著急解決這個難題,請直接看這篇 iOS開發之Socket實現HTTPS GET請求通過Body傳參
真是老大不可怕,就怕老大有文化……因此,就有了我這篇文章,如果你費盡了吃奶的力氣找到了這篇文章,說明你也遇到了這種不一般的情況,那麼我相信這個不會令你失望的。
對於上面提出的看似合理的要求,我開始了諄諄求索。
腦子是個好東西,一般情況我是不捨得用的,沒辦法啊,這次我只能來用一下了……
想想以上三方網路庫無非是通過封裝蘋果的網路庫而成的,之前是NSURLConnection,現在是NSURLSession,前面那個已經或者將要退出iOS開發的舞台,堅決不用,其實這個倒是沒多大關系,因為問題出在NSMutableURLRequest這個類上,只要是用基於這個類的庫,我想都是無法解決上面的問題的吧……如果有人用這個解決的話,一定要告訴我!!!一定要!!一定!
為什麼會這樣子呢?下面是蘋果官方里該類中HTTPBody屬性的注釋:
我英文不太好,@discussion後面那句話翻譯大概是:
這個data(HTTPBody)作為請求的消息體被發送出去,例如:在一個HTTP POST請求里。
它為什麼只提到了POST請求呢,並且單獨拿出來說,我認為不是隨便舉個栗子那麼簡單,大概是說你要非得在GET請求里設置這個屬性……那麼只能說聲對不起您了各位?
至此,我認定市面上只要基於NSMutableURLRequest這個類發HTTP請求的庫都解決不了我這個撓人的需求……
最後在技術老總的提點及逼迫下我只能祭出大招,動用洪荒之力用socket自己封裝了這個GET請求,並實現https連接,終結了這個問題。
解決方案傳送門: iOS開發之Socket實現HTTPS GET請求通過Body傳參
⑥ https會對GET或POST參數加密嗎
HTTPS實際是SSL over HTTP, 該協議通過SSL在發送方把原始數據進行加密,在接收方解 密,因此,所傳送的數據不容易被網路黑客截獲和破解。本文介紹HTTPS的三種實現方法 。 方法一 靜態超鏈接 這是目前網站中使用得較多的方法,也最簡單。在要求使...