天天看點

如何保證http傳輸安全性

目前大多數網站和app的接口都是采用http協定,但是http協定很容易就通過抓包工具監聽到内容,甚至可以篡改内容,為了保證資料不被别人看到和修改,可以通過以下幾個方面避免。

重要的資料,要加密,比如使用者名密碼,我們需要加密,這樣即使被抓包監聽,他們也不知道原始資料是什麼(如果簡單的md5,是可以暴力破解),是以加密方法越複雜越安全,根據需要,常見的是 md5(不可逆),aes(可逆),自由組合吧,你還可以加一些特殊字元啊,沒有做不到隻有想不到, 舉例:username = aes(username), pwd = MD5(pwd + username);。。。。。

非重要資料,要簽名,簽名的目的是為了防止篡改,比如http://www.xxx.com/getnews?id=1,擷取id為1的新聞,如果不簽名那麼通過id=2,就可以擷取2的内容等等。怎樣簽名呢?通常使用sign,比如原連結請求的時候加一個sign參數,sign=md5(id=1),伺服器接受到請求,驗證sign是否等于md5(id=1),如果等于說明正常請求。這會有個弊端,假如規則被發現,那麼就會被僞造,是以适當複雜一些,還是能夠提高安全性的。

登入态怎麼做,http是無狀态的,也就是伺服器沒法自己判斷兩個請求是否有聯系,那麼登入之後,以後的接口怎麼判定是否登入呢,簡單的做法,在資料庫中存一個token字段(名字随意),當使用者調用登陸接口成功的時候,就将該字段設一個值,(比如aes(過期時間)),同時傳回給前端,以後每次前端請求帶上該值,伺服器首先校驗是否過期,其次校驗是否正确,不通過就讓其登陸。(redis 做這個很友善哦,key有過期時間)

備注:保證安全的方法有很多種,以上是本人一時興起,簡單總結幾條加以備忘,以上有什麼漏洞和需要補充,希望大家指出來,互相學習,謝謝!

繼續閱讀