我有一个简单的用户和组数据库。
用户:uid(pk),名称,密码(不要担心密码)
组:gid(pk),name,owner_uid
会员:uid(fk),gid(fk)(用户可以属于多个群组)
现在,我不相信我的数据库管理员,并希望加密/保护特定的coloumns,以便db admin无法将任何现有的uid添加到任何gid。我如何修改我的情景以及我应该加密哪个颜色。
我有一个加密密钥,假设它保持安全,我也想利用sql查询,因此无法完成加密表并存储为blob。
答案 0 :(得分:0)
我认为您不能使用数据库约束来执行此要求。您可以通过编程来管理它。但是,如果您编写一些触发器来处理它,您的(坏)管理员也可以访问触发器。
向Member
添加额外的列,例如key_info
。
在Insert
中:使用uid
和gid
以及特定 salt 的组合制作哈希码(如sha256Hex)。并将uid
和gid
插入Member
。
来自Select
的{{1}}:您有额外的难度。您应该选择具有正确哈希码的记录(来自Member
)。
如果您有大而复杂的盐并且您的管理员无法访问盐(正如您在评论中所述),他/她找不到编解码器算法。因此,如果他/她在Member
中添加了一些记录,则您的代码会忽略选择中添加的记录,因为Member
不能为真。