0

例如:如何存儲在GAE上的密碼,當有人註冊

用戶名:zjm1126 密碼:11

我密碼存儲到GAE數據存儲,

當我看到在數據視圖/ _ah/admin,我可以看到密碼的所有人的密碼誰註冊,

我認爲這是不安全的,是嗎?

是這樣的密碼?

如何存儲的密碼,

感謝

alt text http://omploader.org/vNGtxZA

和check_password方法是:

user=MyUser.get_by_key_name(self.request.get('username')) 
if user.password == self.request.get('password'): 
    session['user.key']=str(user.key()) 
else: 
    raise Exception('error 404') 

回答

10

你應該從未明文存儲密碼。

使用IR-可逆式數據散列算法,像shamd5

這裏是你如何在Python中創建一個哈希:

from hashlib import sha256 
from random import random 
random_key = random() 
sha256('%s%s%s'%('YOUR SECRET KEY',random_key,password)) 

你也應該存儲隨機密鑰和散列用戶同樣提供了密碼。

+3

md5不應該被推薦。 – systempuntoout 2010-06-11 13:10:27

+0

md5對於小型數據庫是可以的,我懷疑你會有足夠的用戶衝突 – DanDan 2010-06-11 15:13:07

0

關於如何使用各種算法來產生密碼的完整性,在stackoverflow上有很多帖子。您應該研究的算法是SHA-256/SHA-512,以及隨機生成的長鹽(也可能存儲在數據庫中)或bcrypt。我不會去討論爲什麼一個人比另一個人好,因爲這個討論已經在其他questions中發生過。

3

這個問題沒有任何特定的應用程序引擎或新的問題,在SO上還沒有被回答過10次。搜索堆棧溢出 store password並閱讀前5個問題。這應該給你在這個問題上有一個很好的基礎。