我正在编写需要良好安全模式的敏感应用程序(健康数据)。当然,错误是存在的,黑客或用户可能会发现它。所以我关心的是尽可能多地保护数据。阅读有关安全性的内容后,我发现了一种可能有用的机制,但我想听听在这方面更有经验的人的意见。该方案是:
- 创建一个数据库,例如将其命名为“app”
- 创建(或不创建)一些公用表
- 对于每个用户,创建一组带有基于用户名和哈希的前缀的表,以避免用户到已知的其他用户前缀(sjiXoi4sa_table)
- 所有针对用户的数据库查询都将加上他自己的前缀,除了那些引用全局范围的前缀
这是一个好的安全方案吗?可以改进吗? (例如,如果每个用户都可以加密他们自己的表,那就太好了)。欢迎提出任何建议。
最佳答案
正如您所描述的,该模式对提高安全性没有任何作用 - OTOH,使用更多表的额外开销意味着更多代码意味着注入(inject)更多缺陷。这种方法也会影响性能。
但是,如果您要设置权限以便用户只能对他们自己的表进行读/写访问,那么是的,它会更安全 - 但是您仍然在其他地方给自己带来了很多问题。您可以获得相同级别的安全性并降低复杂性/代码量并通过正确规范化数据并拒绝用户对表的所有访问来解决性能/可伸缩性问题 - 但通过存储过程授予访问权限(您可以有效地逐行应用权限)。
关于php - 将用户数据保存在不同的 MySQL 表中是一个很好的安全方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6607723/