“get”安全,還是“post”安全?這或許是大家總結兩者必須要分析的內容,因為這涉及到我們將內容從瀏覽器傳送到服務器的安全性,選擇不當將會帶來巨大的不安全因素,從而可能帶來巨大的損失。這篇博客,我將闡述一下,當然更多的還是希望各位大神發表一下見解,討論一下下!
首先,我們來看一下兩者最基本的區別:
- GET請求通過URL(請求行)提交數據,在URL中可以看到所傳參數。POST通過“請求體”傳遞數據,參數不會在url中顯示
- GET請求提交的數據有長度限制,POST請求沒有限制。
- GET請求返回的內容可以被瀏覽器緩存起來。而每次提交的POST,瀏覽器在你按下F5的時候會跳出確認框,瀏覽器不會緩存POST請求返回的內容。
- GET對數據進行查詢,POST主要對數據進行增刪改!簡單說,GET是只讀,POST是寫。
這是大家經常總結的兩者之間的區別!前兩天一位技術大牛給我講解兩者的安全性?大家看一下我們之間的對話:
大牛:你認為get和post兩者誰更安全一些呢?
菜鳥(我):我認為post,更安全一些,因為get傳輸方式將在URL中顯示參數,更容易引發一些“不懷好意”人的興趣,例如上邊出現了username和userpwd等特殊字符時,更容易給他們一些興趣。雖然可以編碼,當是也是可以解碼的。而post則對方看不見,即使一些高手截獲這些信息,也需要它篩選還有解碼,相對來說比get方法更加安全。當然是沒有絕對的安全的。
大牛:NO!你只看了表面!HTTP協議中提到GET是安全的方法(safe method),其意思是說GET方法不會改變服務器端數據,所以不會產生副作用。如果是該用POST的地方用了GET,又說GET不安全,那GET也太冤枉了。也就是說,只要我們正確選擇使用GET和POST,那么GET是安全的。
菜鳥(我):額……
此段對話到此結束,沒有再爭論下去。因為它拿出了HTTP協議,當做了論據,這是在IT界很權威的文檔。我沒有很充足的理由去辯論。當時我還是認為它的這個說法有點不合適。
在我認為,他把原因和結論弄反了。他的觀點是:只要我們正確使用二者,因為GET方法中不對數據進行修改,不傳送一些保密的信息,而這些需要由POST來傳輸,所以說GET不存在安全問題,而需要注意的是POST傳輸的安全問題。
我看來,正確使用二者,怎么算GET和POST兩者正確的選擇來使用了。這些規矩或者規范,是怎么制定的呢?為什么說get不能傳送加密信息和修改數據呢?原因還是說它沒有POST安全,所以HTTP協議規定了它用來傳輸不重要的讀操作,所以才不會因為它而產生安全問題。因為它傳送的數據不值得別人去盜取,沒有價值。
所以在我看來,還是POST這種方式,比GET更安全。既然是做比作,比作着來學習,我們就需要來讓它們做相同的工作來看效果。總不能一個小孩兒跑50米比一個大人跑100米用的時間少,就說小孩兒的跑步速度比大人的快吧?
雖然爭論這個沒有太大的用處,沒有太大的意義,但是還是想寫寫,想聽聽:1,大家對“POST和GET安全”的看法,2,對“討論兩者安全這件事”的看法,3,對“如何對待學習知識的看法,是該囫圇吞棗,還是認真對待。那些該囫圇吞棗,那些該認真對待”的看法……
原文:http://blog.csdn.net/liujiahan629629/article/details/18511079