我正在开展一个庞大的项目。我一直在研究它一段时间,并决定在软件处理数据的方式上“提升”安全性。我已经知道如何使用DES加密来加密和解密数据字符串,但我不确定的是放置加密数据的位置。我想将所有内容存储在MySQL数据库中,但还没有弄清楚如何使用数据库。我做了一些谷歌搜索,但没有取得胜利。
我需要为每个帐户存储以下内容:
用户名
密码
秒。问题
秒。答
电子邮件
关键字列表
网址列表
我认为存储这些信息就像在数据库中创建表格一样,但我不确定。也许是用户的表,然后更多的表用于表中的其余用户?我不知道如何使用Python的MySQL数据库,所以任何帮助将不胜感激。
对于晚期编辑感到抱歉,我才意识到我需要清理一下。
答案 0 :(得分: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
假设:
正如我评论的那样,我建议使用密码(使用盐)。无需可恢复,他们可以重置密码。我过去曾模仿过Django的密码风格:
sha1$8ac10f$a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
那是:哈希方法,盐和密码哈希,由$字符分隔。你可以只生成一个随机字符串作为salt。在散列之前将其添加到密码。存储密码字段中显示的字符串。要测试密码的正确性,请提取这3个字段,将salt附加到用户输入的密码,应用散列并与数据库中的散列(第3个字段)进行比较。如果匹配,则密码正确。
我个人会使用SQLAlchemy。
答案 1 :(得分:0)
您有两种选择,主要是:
一般来说,你知道如何制作一张桌子吗?
对于mysql,您可以通过登录,创建数据库,选择(使用)该数据库来创建示例数据库,然后
create table account(
username varchar(32),
password varchar(128),
sec_question varchar(512),
sec_answer varchar(128),
email_address varchar(128)
);
列表或URL和关键字最好作为单独的表格完成,尽管描述的内容超出了本答案的范围!
请注意,这不是一个全面或最好的方式来做你的表,而不是你可能用ORM创建它的方式,但只是一个例子。
要创建一个安全可靠的密码系统,您需要对此进行大量研究。我相信这里的人会很乐意帮助你理解哈希等等。
这是使用MySQLdb模块的l ink to a good article。