天天看點

Python-Flask架構(三),如何保護使用者密碼? 淺談網絡安全

我們為什麼要保護使用者密碼

不對使用者密碼進行加密會有什麼危險

那該如何防範

在flask架構中該如何存儲使用者密碼

使用式例

作為網站開發人員,保護使用者的密碼不僅僅是我們的責任更是我們的義務,我們應該有一個正義的态度。這樣子才能獲得更好的口碑。簡單的說就是,網絡環境下每個人的隐私十分重要!!!

如果我們不對使用者密碼加密,且以明文的方式存儲到資料庫中,假若黑客擷取到我們的資料庫,那所有的使用者密碼就全部都會被暴露出來,是以我們需要對使用者的密碼加密(哪怕資料庫被脫庫了,黑客得到的也隻是一堆加密的密文)。隻要黑客不知道我們的加密算法,那破解難度就十分大了,簡而言之使用者的密碼就不會被竊取。

so 這就需要一種單向加密的算法,使得加密後的密文,無法反推回明文。

利用加密算法将使用者的密碼進行加密,防止黑客得到我們資料庫的時候直接暴露使用者密碼。

其實大多數網際網路公司都沒有對使用者的密碼進行加密存儲(2012年附近某dn網站脫庫事件)

存儲通過密碼生成的hash值。每個密碼都對應一個獨一無二的hash值,進而避免明文存儲密碼。

加密算法:

sha-1,md5,base64。。。

其中 md5,sha-1都屬于哈希加密

但是簡單的計算hash值,并沒有達到我們的要求,拿md5講,www.cmd5.com,就可以解決大部分的解密工作,我們則需要加鹽(salt)計算hash值。計算加鹽hash值

python中的passlib,bcrybt,hashlib等

而flask的主要依賴werkzeug也提供了這一功能。werkzeug在security子產品中提供了一個generate_password_hash()函數用于計算給定密碼生成hash值,其中method 用于指定計算hash值的方法,salt_length參數用來指定salt的長度。

security子產品中的check_password_hash(pwhash,password)函數用于接受hash值(pwhash)和密碼(password)作為參數,用于檢查密碼hash值與密碼是否對應

Python-Flask架構(三),如何保護使用者密碼? 淺談網絡安全

網絡安全是一個永遠都不會低迷的話題。今天一個web服務,是沒有絕對安全存在的。作為開發人員,我們不能隻會敲代碼,更需要具備一定水準的網絡安全知識,進而使自己的web服務,擁有一個相對安全的處境。是以 “一個好的程式員他也應該是一個黑客”