查询获取了一些未经授权的数据:过滤或阻止

问题描述 投票:1回答:1

我正在使用Spring-data-rest,但这可能是一般性问题。如果我正在创建REST服务并且经过身份验证的用户发出了一个REST查询,该查询获取了一些未经授权的数据,那么响应应该是403还是我应该过滤掉未经授权的数据并发送其余数据。

另一种情况可能是用户请求数据完全是未经授权的。在这种情况下,响应应该是403还是404?

rest spring-data-rest
1个回答
1
投票

对于GET,我使用404和过滤。如果响应是一组实体,那么我只是过滤掉当前用户没有READ权限的实体。 (如果所有数据都被过滤掉,那么请求是一个空集,但它仍然可以。)如果响应是一个实体并且用户没有READ权限,那么我返回404。

恕我直言,如果用户没有READ权限,那么他甚至不应该知道实体的存在。 (如果我返回403,那么他就会知道有一个带有该id的对象。)

我只返回403,如果用户有READ,但没有UPDATE / DELETE权限,他试图操纵数据。

此外,如果他试图删除多个对象,那么我只删除他具有DELETE权限的对象,并默默跳过其余对象。

我创建了Spring-Data-Rest ACL extension,它可以在所有自动生成的端点上自动处理所有这些问题(如果您感兴趣的话,可以更多)。

© www.soinside.com 2019 - 2024. All rights reserved.