post真的安全么?


經常聽到有人這樣說,PostGet更安全,似乎這種想法充滿了整個網絡,帶給人根深蒂固的影響,但是Post真的比Get更安全么?

Http請求方式

Http請求發送方式常用的就是以下兩種:

     Get機制

     Post機制

Get機制

Get機制的限制,比如最大1024字節,這個略去不表,Get最大的特點是提交時將參數通過url來發送。

Post機制

Post機制,實際是將數據http的數據部分,只不過不在url里面顯示罷了。

請求舉例

Get機制

例如:請求這個url: http://topic.csdn.net/u/20121016/08/2f7960fd-31bd-44ee-bec5-ed297af60039.html?seed=996321166&r=79901963

可以看出這是明顯的get方式,有參數,通過chome瀏覽器得到

  

url里面就可以得到數值,但是如果是底層的調用,比如ajax請求,就不會在瀏覽器的地址欄中有顯示,比如下面的請求:

 

Post機制

比如:博客園的登錄請求:

http://passport.cnblogs.com/login.aspx?ReturnUrl=http%3a%2f%2fwww.cnblogs.com%2f

通過瀏覽器得到:

 

可以看到,這是post請求,並且地址欄里是沒有參數信息,更沒有密碼等等信息,但是往下看,沒錯,Post請求一樣,是將內容以明文的方式在傳輸,以下通過wireshark截包來看:

 

數據包的發送,如下: 

 

上圖藍色部分是Post的數據部分,post其實只是將數據寫到了http尾部,如此而已。所以此處從安全上來講,與不顯示的后端ajaxGet請求,其實在安全性上是一樣的。所以post更安全么,不見得,因為post的設計之初,本來就不是為了安全而來的。

擴展一下

Ajax跨域

不讓ajax跨域,這樣就來得合理了,因為如果允許跨域,那只需要寫幾行js代碼,這樣就會造成重要信息(比如密碼)的泄漏。

Tcp連接個數

現代的瀏覽器,為了加快下載(加載)速度,已經將RFC文檔里面的”should be at most 2 connections”中的should理解的出神入化,因為RFC里面僅僅是should而不是must,所以現代的瀏覽器同時允許建立的tcp連接一般是超過2tcp連接的。

Tcp協議

就像上篇TCP連接檢測里面提到的那樣,“tcp只是數據的發送與接收,包括握手,斷開以及rsttime_waitclose_wait 等等。“,Http同樣如果,知道協議,其實自己寫一個簡單的IIS真不費力。

最后

前面提到,TCP的連接個數,說到這里突然想到了一個問題,同時也再深入的擴展一下,為什么一台機器connect同一個IPporttcp連接數不能超過65535(當然實際65535也是達不到的)個呢?

 

答案請看這里《tcp的65535個連接之迷》 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM