【问题标题】:Database Schema for group组的数据库架构
【发布时间】:2018-07-15 00:48:23
【问题描述】:

我有一个简单的用户和组数据库。

用户:uid(pk)、姓名、密码(不用担心明文密码)

组:gid(pk)、名称、owner_uid

成员:uid(fk)、gid(fk)(一个用户可以属于多个组)

现在,我不信任我的数据库管理员并希望加密/保护特定列,以便 db 管理员无法将任何现有 uid 添加到任何 gid。如何修改我的 scema 以及我应该加密哪个列。

我有一个假定保持安全的加密密钥,我也想使用 sql 查询,因此无法完成对表的加密并将其存储为 blob。

【问题讨论】:

  • 更换数据库管理员
  • 我想我可以 ????
  • 您应该使用散列系统,以便只有通过前端您才能将有效信息添加到 dB。
  • 你能解释一下吗
  • 您的管理员是否访问您的源代码或 dll 或 jar? (可能使用反编译工具),或者只能访问您的数据库?

标签: mysql database-design database-schema


【解决方案1】:

我认为您不能使用数据库约束来执行此要求。您可以通过编程来管理它。但是,如果您编写一些触发器来处理它,您的(坏)管理员也可以访问触发器。

Member 添加一个额外的列,例如key_info

  1. Insert 中:使用uidgid 以及特定的salt 组合生成哈希码(如sha256Hex)。并将uidgid 插入Member

  2. 在来自MemberSelects 中:你有一个额外的难度。您应该选择具有正确哈希码的记录(来自Member)。

如果您有一个大而复杂的盐并且您的管理员无法访问盐(如您在 cmets 中所说),他/她无法找到编解码器算法。因此,如果他/她在Member 中添加了一些记录,您的代码将忽略选择中添加的记录,因为key_info 不能为真。

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多