1. 程式人生 > >使用者登入時的安全問題剖析

使用者登入時的安全問題剖析

POST是提交資料的方式,比較常見的POST提交資料的方式有四種:

1、application/x-www-form-urlencoded(瀏覽器支援):主要向伺服器提交使用者隱私相關的資訊

2、multipart/form-data(瀏覽器支援)向伺服器上傳小檔案,一般不超過2M

3、application/json(瀏覽器不支援):向後臺伺服器提交結構化資料

4、text/xml(瀏覽器不支援):向後臺伺服器提交結構化資料

本文主要介紹第一種提交資料的方式:如何用POST進行使用者資料安全提交,保護使用者隱私。應用例項:登入

使用者登入操作常用的有兩種方式,GET和POST。

下面就用Firefox瀏覽器詳細解析使用者登入的這兩種方式,為什麼要選擇POST,怎麼利用POST才能讓使用者資料更安全!

GET登入:

登入後,我們會在url位址列中看到登入的使用者名稱和密碼,如此一來便毫無安全可言。


不僅如此,在控制檯的伺服器訪問日誌中能夠看到詳細的訪問資訊!

使用GET方法所有引數都包含在URL中,所有訪問網站的URL都會記錄在伺服器的訪問日誌中。

而伺服器的訪問日誌正是黑客攻擊的重點物件之一!

利用GET進行使用者資訊登入是一種非常不安全的方式。

相比於GET而言,POST就安全得多。

POST是通過攜帶資料體傳遞使用者登入資訊,登入的資料並不會出現在URL和伺服器訪問日誌中。

但這也並不十分安全,只要攔截到了傳遞的資料體,使用者名稱和密碼就能輕鬆獲取。

例如:利用Firefox中的Firebug就能輕鬆攔截到資料體,獲取使用者名稱和密碼

在關係到使用者隱私的時候,要時刻遵循兩個原則:

1、任何應用程式都不能在本地儲存與安全相關的使用者資訊

2、任何應用程式在向伺服器傳遞資料的時候,都不能直接傳遞與安全相關的使用者資訊。

要想讓使用者資訊保安,就必須對其進行加密,讓別人即便是拿到了安全資訊,擺在眼前的也是一串亂碼,沒有半點用處

MD5是一種常用的加密方法,它是一種雜湊函式,利用MD5對使用者資訊進行加密,會增加使用者資訊保安性。

網上有關於MD5的第三方框架Category

利用這個第三方框架可以實現對密碼進行MD5加密

加密之後的密碼即便是被人攔截,也是一串經過加密的密文,而且這段密文無法反編譯回明文,即便是你拿到了編譯函式也無法做到反編譯。

下面是經過MD5加密後打印出來的密碼密文:

這一串202cb962ac59075b964b07152d234b70就是密碼123的密文。

如此一來就安全到無懈可擊了嗎?你要是這樣想那就圖樣圖森破了。

這裡介紹一個網站:

還能說什麼?人家有160T的資料庫,記錄了24萬億條密文資料,恐怕只要你設定的密碼還在人類能記住的範圍內,我就能給你破解。

啥也別說了,一句話:這是一個神奇的網站。

有漏洞就要補,既然你只能破解有記錄的密文,那我弄一條你沒記錄的不就解密不了了嗎?將密碼設定成非人類能記住的即可。

比如:dfKFHK83*#$!dfa>kjdakj2093978609)(&^%$+/.X\AJFkdfh276920s54568$$%*!^&!./SXKAa03-293-=29713720917ks^%$(jh628

這段密碼加密後,我相信它絕對破解不了!安全是有了,但同樣沒人能記住這種密碼,更沒人設定這種密碼,也很少有地方允許設定這種密碼(密碼一般都會限制長度)

既然人不能設定,那就在程式內給密碼後面新增上!

這就是給密碼加“鹽”,就是給密碼加點佐料(一串亂七八糟的字元)。

打印出來的密文:

在神奇的網站上解密測試:


根本解密不了了!

這樣使用者資訊就有了安全保障。