这是我对mysql凭据表的简单表定义。
case "credentials":
self::create('credentials', 'identifier INT NOT NULL AUTO_INCREMENT, flname VARCHAR(60), email VARCHAR(32), pass VARCHAR(40), PRIMARY KEY(identifier)');
break;
请忽略除内部参数以外的所有参数...语法很好...我只想验证表单。基本上,我有一个PRIMARY KEY和3个字段的自动递增int - 用户的名字,电子邮件和密码。
我希望这个尽可能简单。搜索将基于id
问题:这适用于基本凭据表吗?
答案 0 :(得分:1)
请不要以明文存储密码。
使用众所周知的迭代散列函数,例如bcrypt或PBKDF2。不要存储原始MD5哈希,甚至是原始SHA或SHA-2哈希。你应该总是加盐并迭代你的哈希值才能保证安全。
您需要一个额外的列来存储salt,如果您想要灵活,您还可以拥有每用户迭代次数,甚至可能是每用户哈希函数。这使您可以灵活地在将来更改为不同的哈希函数,而无需所有用户立即更改其密码。
除此之外,该表看起来还不错。
答案 1 :(得分:0)
我建议您增加电子邮件字段的大小(电子邮件的最大长度最多可达256个字符)。此外,您应该将密码存储为哈希(例如bcrypt)而不是普通字符串。