登錄密碼與HTTP Request


我們知道,在一些主流的瀏覽器中按F12,就會拉出一個查看web訪問詳細信息的窗口,在firefox中叫firebug,在chrome或者IE中,則叫developer tools,他們功能都大同小異,當然,比較重要的自然是查看http request與response, 幸運的是,這三個工具都把其放在一個叫Network的tab下面,雖然顯示格式略有不同,但基本信息都是一樣的。

當我們通過一個form提交信息的時候,如果是GET方式,form中的信息會以參數的形式附加在URL后面;如果是POST的方式,則包在request的body中,但不論是那種方式,form中的信息,都會在http request中,而且可以用上面提到的工具查看到:如果這個form恰好是個登陸框,或者是支付框,那么你的用戶名與密碼自然也會出現在request中。

就此,我針對三類網站做了實驗:

1. 普通非加密網站:博客園(http://passport.cnblogs.com/login.aspx)
無任何加密,密碼自然如願以明文方式顯示在http request中:(chrome)

tbUserName:test
tbPassword:test
btnLogin:登 錄
txtReturnUrl:http://home.cnblogs.com/

(原來的douban的例子是錯的,其登錄頁面是https的)

2. https加密網站:GitHub(https://github.com/lzprgmr) + Google(http://www.google.com.hk/)

雖然這兩個網站使用了https加密,但我們捕捉到的request,還是包含了密碼明文:

Form Data: authenticity_token:9fsgNlzbnOD.....=
login:test
password:test
commit:Sign in

原因在與https(ssl)的加密是發生在Application layer與Transportation layer之間,所以,在傳輸層看到的數據才是經過加密的,而我們捕捉到的http request的,自然是應用層的,是還沒經過加密的數據。

3. 帶安全控件的支付類網站:支付寶(https://auth.alipay.com/login/index.htm

支付寶自然是https的,但是他的同時也增加了安全控件來保護密碼, 以前認為這個只是用來防鍵盤監聽的,其實,看下面http request截獲的密碼:這個安全控件把給request的密碼也先加了密,緊接着https再加次密,果然是和錢打交道的,安全級別高多了:)

Form Data: logonId:test@gmail.com password:EgUw11BHmg7obmQNCckbCd1b ekN5Jv7 Fw41MXVMicEVsF/ehu9hhwB6V8eBGfQvWA8IqHEGClCJ1C97qg5Rp1zQSHLAf1DkgR97b99VRJ3LRjLKywAaWgs1gjW2AS9S49rDw 5ERUh3vK021/I9DiubHKZS4NUzdhfb6Hz8 iWyh3lWBO/3rw9ehtug/1dQJ9oje2CUpM0cR9DPjiLikOIZ0JSr/yCCz68VzfHmgdE8Rr 4yqO6titkKGh0dYek0hCck6yQ2d7XAkd/3U1YA2B4EQ47qKVNpBdienXRfrOn Egu7JBoSfsqcnvAosvRC 94diCJ Grz7hW2GJjlg==


免責聲明!

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



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