C# 在WebAPI中是否有保护或加密实体ID的最佳方法?

C# 在WebAPI中是否有保护或加密实体ID的最佳方法?,c#,encryption,asp.net-web-api,asp.net-web-api2,C#,Encryption,Asp.net Web Api,Asp.net Web Api2,我使用asp.NETWebAPI提供服务。但是我发现探索实体的id(资源标识)不是一个好主意 例如,如果您传递您的用户配置文件ID以获取用户的配置文件。由于id在DB中是自动递增的,如果有人迭代id以获取其他人的配置文件,则会导致用户的配置文件泄漏。(可能您建议使用GUID,但int-type id具有更好的性能) 所以我想在WebAPI过滤器中随时间加密ID。有好的演示吗 更新:不要被用户演示弄糊涂了。如果你有产品。首先获得产品列表,然后根据产品id获得产品详细信息。如何保护产品id。您不应该

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

例如,如果您传递您的用户配置文件ID以获取用户的配置文件。由于id在DB中是自动递增的,如果有人迭代id以获取其他人的配置文件,则会导致用户的配置文件泄漏。(可能您建议使用GUID,但int-type id具有更好的性能)

所以我想在WebAPI过滤器中随时间加密ID。有好的演示吗


更新:不要被用户演示弄糊涂了。如果你有产品。首先获得产品列表,然后根据产品id获得产品详细信息。如何保护产品id。

您不应该隐藏id,但可以通过角色进行控制。根据请求者返回具有不同数量属性的资源

如果是匿名呼叫,可能不返回任何内容,或者只返回公共数据,任何人都可以以任何方式看到这些数据

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

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

如果用户正在请求关于他自己的信息,甚至更多的数据


现在,对于不同的访问级别,最好使用不同的端点,以便更容易定义和记录您的api,例如,用户要获得自己的信息,可以使用/user/me

你为什么要这个?您的API没有身份验证机制吗?您可以使用OAuth Jwt authenticationI允许客户端通过匿名非特殊用户@john访问id您希望通过使用加密id实现什么?我的意思是,这显然不是为了限制对资源的访问。除非你希望通过隐晦来实现安全性,否则这是一条不好的道路——隐晦的安全性不是安全性。@john我不想避免有人重复ID。(不要直接使用GUID)