2010-07-31 45 views
0

我正在開發一個龐大的項目。我一直在努力研究它,並決定在軟件處理數據的方式上「提高」安全性。我已經知道如何使用DES加密來加密和解密數據字符串,但我不確定的是將加密數據放在哪裏。我想將所有內容都存儲在MySQL數據庫中,但還沒有弄清楚如何使用數據庫。我做了一些谷歌搜索,但沒有佔上風。使用Python在MySQL數據庫中存儲信息

我需要存儲每個帳戶的以下內容:

用戶名
密碼
秒。問題
Sec。答
電子郵件
關鍵字列表網址時

我想存儲該信息會像在數據庫中創建表,但我不知道的
名單。也許是用戶的表格,然後爲表格中的其他用戶留下更多的表格?我不確定如何使用Python的MySQL數據庫,所以任何幫助將不勝感激。

對不起後期編輯,我只是​​意識到我需要清理它一點。

+1

請哈希,不要加密密碼,並在此哈希。 – icktoofay 2010-07-31 03:20:58

+0

使用MD5?我聽說這很好,但不可解密。我需要能夠再次讀取原始數據,以獲得密碼恢復功能。 – 2010-07-31 03:23:18

+1

您可以通過http://www.google.com/search?q=python+mysql+tutorial找到大量優秀的Python + MySQL教程 - 您是否看過其中的一些,以及缺少什麼你去嗎? – 2010-07-31 03:23:59

回答

2

這裏的模式可能是什麼樣子的例子:

user 
    user_id (PK) 
    username (char) 
    password (char) 
    security_question_id (FK) 
    security_answer (char) 
    email_address (char) 

security_question 
    security_question_id (PK) 
    question (char) 

keyword 
    keyword_id (PK) 
    keyword (char) 

user_keyword 
    user_keyword_id (PK) 
    user_id (FK) 
    keyword_id (FK) 

url 
    url_id (PK) 
    user_id (FK) 
    url (char) 

PK = Primary Key 
FK = Foreign Key 
char = varchar of some max length that you define 

假設:

  • 有可供選擇的安全問題標準列表。
  • 很多用戶可能有相同的關鍵字,所以他們被放在他們自己的表中。
  • URLs更獨特,所以只需將url和user_id存儲在一起。如果你願意,你可以改變這個關鍵字使用的共享模式。
  • 沒有可以爲空,所有字段都是必需的。

正如我所評論的,我建議使用密碼(帶鹽)。不需要恢復,他們可以重置密碼。我模仿Django的密碼風格過去:

sha1$8ac10f$a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 

這就是:散列法,鹽和密碼哈希,由$字符分隔。你可以生成一個隨機字符串作爲鹽。在散列之前將其添加到密碼。存儲密碼字段中顯示的字符串。要測試密碼的正確性,請提取這3個字段,將salt附加到用戶輸入的密碼,應用散列並與數據庫中的散列(第3個字段)進行比較。如果它們匹配,則密碼是正確的。

我會親自使用SQLAlchemy。

+0

我感謝你的努力,我知道把這個帖子,但我仍然不知道如何把這已成爲工作代碼。我一直在閱讀關於使用MySQLdb模塊的小教程,http://www.kitebird.com/articles/pydbapi.html#TOC_1,但到目前爲止,我不是我需要的地方。 – 2010-07-31 03:44:03

+0

你需要把問題分解成更小的問題,我們不能只爲你寫代碼 – FogleBird 2010-07-31 16:15:39

+0

好的,他重新是我的主要問題。我發現了一些關於如何使用MySQLdb模塊的優秀教程,但是當試圖導入模塊時,它說它找不到 _mysql模塊。我做了一些谷歌搜索,但似乎無法找到該文件。有任何想法嗎?現在,就密碼加密而言,我使用的是DES,這是不是很好? – 2010-08-01 19:22:08

0

你有兩個選擇,主要有:

你知道如何使一個表中,一般?

對於MySQL,你會通過登錄,創建一個數據庫,選擇(使用)該數據庫,然後

create table account(
    username varchar(32), 
    password varchar(128), 
    sec_question varchar(512), 
    sec_answer varchar(128), 
    email_address varchar(128) 
    ); 

列表或URL和關鍵字,讓您的例子DB將作爲單獨的表中做得最好,儘管描述超出了這個答案的範圍!

請注意,這不是一個完整的或最好的方式來做你的表必須的,而不是你可能用ORM創建它的方式,但只是一個例子。

要創建一個安全可靠的密碼系統,您需要對此進行大量的研究。我相信這裏的人會很樂意幫助你理解哈希等。

這是關於使用MySQLdb模塊的l ink to a good article

相關問題