如何防止用户访问其他用户的数据?

时间:2013-11-20 09:27:03

标签: database design-patterns database-design data-structures architecture

问题

  • 用户已通过身份验证
  • 简单数据库架构:用户--->文件--->项目
  • 用于访问文档项的API

如果记录的用户知道属于某个其他用户的项目的ID,则可以访问该用户。 我想阻止这种行为。

我找到的第一个解决方案是向每个表中的每个记录添加一个userid字段,以便在每次查询时检查该记录是否属于记录的用户。

这是一个很好的解决方案吗?您是否知道一些更好的设计模式以阻止用户访问其他用户的数据?

由于

1 个答案:

答案 0 :(得分:1)

  1. 如果文档属于用户,请调整查询,以便仅检索属于用户文档的项目。无需在项目本身中添加用户ID。
  2. 如果您需要向用户公开ID,请将这些ID设为GUID,而不是连续的数字。虽然不是一个完美的解决方案,但它更难以猜测其他用户的项目的ID,
  3. 如果你使用的是Oracle,那就是VPD,虚拟专用数据库。您可以使用它来限制用户访问。