我是MySQL数据库的新手,我希望得到熟悉它的人的意见,同时我在学校项目上工作。我想创建一个类似于
的login_tablelogin_table
---------------------
id PK
emailAddress
password
firstName
lastName
telephone
address
我用谷歌搜索并看到一些例子,只有{PK,userName,password}。
将所有信息都放在一个表格中还是拆分信息是否被业界接受?在将值发送到数据库之前是否需要加密密码,还是可以在数据库中完成?
答案 0 :(得分:0)
保留一个用户帐户表是有效的。处理密码的常用策略是在提交密码的任何表单上要求https(无论是创建帐户还是登录),并在保留到数据库之前加密或散列应用服务器中的密码。
如果除了验证登录信息之外不需要密码,则最好对密码进行哈希处理。存储密码时,您可以使用SHA2($server_key + $PK + $password)
。在用户登录时,您每次都会从检索到的数据中计算并比较该哈希值。
如果您需要密码(例如,如果您的应用服务器代表用户代理其他系统的请求),那么加密存储密码可能是更合适的选择。
我建议不要使用数据库来加密密码。您很可能会将明文密码从应用服务器传输到数据库服务器。此外,您可能希望将来迁移到其他数据库平台,例如,迁移到某个云存储解决方案。如果是这样,最好在应用服务器中执行解析和加密等任务,并使数据库专注于持久性和检索。