我正在开发Web服务,该服务将为具有相同数据结构的单独组织提供服务。我正在寻找更安全的方式来保持许多组织的数据分开并避免insecure direct object references。实体框架中的用户/组织上下文限制
我可以在接下来的方式实现:每个DB查询
通行证用户ID信息(得到这个用户,检查请求的资源与某些组织等的组织)。
为每个组织创建单独的数据库实例,并在会话初始化期间提供特定组织的连接字符串。
第一种方式看起来有点无聊,需要额外关注每个请求。很容易错过验证,一些用户可以通过在自己的请求中传递随机ID来探索其他组织的数据。
第二种方式消除了关于额外过滤的所有问题。但我打算使用云数据库,每个新实例都需要额外付款,所以我想避免这种情况。
是否有可能以其他方式维护实体框架上下文?
将组织ID作为分区键存储您的记录。所以你可以用它来分类组织。 – Aravind
根据您使用的SQL Server版本,查看行级安全性https://msdn.microsoft.com/en-us/library/dn765131.aspx,特别是使用EF的示例https://azure.microsoft.com/ en-us/documentation/articles/web-sites-dotnet-entity-framework-row-level-security/ – Macilquham
@Macilquham你的评论是我的问题的答案。 RLS是我的项目的解决方案。 – RredCat