【问题标题】:how to add confirmation fields to mysql table creation如何将确认字段添加到mysql表创建
【发布时间】:2017-06-05 11:30:26
【问题描述】:

我正在关注如何使用 mysql 为 android studio 应用程序制作表格的教程 这是创建表的代码

create table users(
id int(11) primary key auto_increment,
unique_id varchar(23) not null unique,
name varchar(50) not null,
email varchar(100) not null unique,
encrypted_password varchar(80) not null,
salt varchar(10) not null,
created_at datetime,
updated_at datetime null
);

但本教程中的表格只有:

name
email
password

虽然我的表单有:

email
confirm email
name
password
confirm password
referral code

我如何添加确认字段,例如确认密码字段到 mysql 创建表

【问题讨论】:

  • 不要加密密码,当攻击者得到数据库时,他也会得到加密密钥。仅使用散列函数是不够的,仅添加盐对提高安全性无济于事。使用随机盐在 HMAC 上迭代大约 100 毫秒,然后将盐与哈希一起保存。使用password_hashPBKDF2Bcrypt 等函数或类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。
  • 好的,你建议我做什么?
  • 使用诸如password_hash/password_verifyPBKDF2Bcrypt之类的函数,持续时间约为100毫秒。
  • 对不起,我对 sql 不太了解,该函数应该去哪里?

标签: android mysql


【解决方案1】:

不要在数据库中添加确认字段,因为它会违反 DRY(不要重复您的自我)因为如果添加两个包含相同值的列会浪费存储空间。您可以在android端进行验证。这将是比在数据库中添加字段更好的选择

【讨论】:

    【解决方案2】:

    关于创建帐户:

    1. 验证字段
    2. 比较密码和确认字段
    3. 根据您使用的语言,通过密码派生函数运行密码,例如password_hash/password_verifyPBKDF2Bcrypt
    4. 将密码推导放在数据库的密码字段中

    登录时:

    1. 使用用户ID(名称?)从数据库中检索帐户信息

    如果使用password_hash/password_verify

    1. 使用提供的密码和数据库中的密码值调用password_verify

    其他

    1. 通过上面用到的密码推导函数运行密码
    2. 将派生密码与数据库中的值进行比较

    注意:不要在数据库中添加confirm passwordconfirm email 字段,只需使用它们来验证提交即可。

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 2016-09-08
      • 1970-01-01
      • 2016-04-09
      • 2011-04-13
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多