有没有最好的方法来保护或加密WebAPI中的实体ID?

时间:2017-06-29 04:03:06

标签: c# encryption asp.net-web-api asp.net-web-api2

我使用asp.net WebAPI来提供服务。但我发现探索实体的id(资源标识)并不是一个好主意。

例如。如果您传递UserProfile ID以获取用户的个人资料。因为id在DB中自动递增,如果有人迭代ID以获取其他人的配置文件,它将使用户的配置文件泄漏。(也许你建议使用GUID,但int类型id有更好的性能)

所以我想在WebAPI过滤器中随时间加密ID。有没有一个很好的演示?

更新:不要被用户演示混淆。如果你有产品。首先,您将获得产品列表,然后您将按产品ID获取产品详细信息。如何保护产品ID。

1 个答案:

答案 0 :(得分:1)

你不应该隐藏身份,但你可以用角色来控制它。根据谁的请求返回具有不同数量属性的资源。

如果是匿名电话,可能不会返回任何内容或只返回公开的数据,任何人都可以看到这些数据。

如果它已登录用户,也许他可以看到有关其他用户的更多数据。

如果是管理员请求该信息,他可以看到更多数据。

如果用户要求提供有关他自己的信息,则需要更多数据。

现在也许最好为不同的访问级别设置不同的端点,以便更容易定义和记录您的api,例如,对于用户获取自己的信息,它将是/ user / me 。