如果我在多租户应用程序中使用GUID作为ID,我真的需要检查数据权利吗?

时间:2011-07-24 03:46:21

标签: security web-applications

假设我有一个名为Store的域级别的多租户应用。每个租户只能查看他/她的商店。我给每个商店一个GUID。

现在,由于它是一个多租户应用程序,因此我应该检查每个请求以确保用户有权访问她想要访问的数据。否则,可以轻松地将/ store / show / 1更改为/ store / show / 2。

但是,由于我使用的GUID或多或少保证是唯一的,我是否需要进行此项检查?用户猜测系统中另一个GUID的几率是多少?

1 个答案:

答案 0 :(得分:1)

如果有人偶然或故意偶然发现属于另一个租户的另一家商店的GUID,那么很可能不会偶然发现。如果你正在使用Repository模式,那么我会让存储库附加逻辑(基本上为每个查询添加WHERE StoreTenantID = UsersTenantID)以检查以确保用户正在寻找的商店是他们被允许的商店见。

无论如何实现这一点可能并没有什么坏处,因为您可能会遇到用户希望拥有“漂亮”URL并希望在URL中使用商店名称或数字的时间,在这种情况下,您只需要do有一个匹配该模式的自定义路由(在MVC的情况下),然后相应地更新您的存储库。

希望有所帮助 - 最重要的是我会继续并浪费一些时间进行检查。