Entity framework $select和$expand在Web API中公开敏感数据

Entity framework $select和$expand在Web API中公开敏感数据,entity-framework,asp.net-web-api,json.net,asp.net-web-api2,Entity Framework,Asp.net Web Api,Json.net,Asp.net Web Api2,我试图通过使用[JsonIgnore]属性对用户表中的PasswordHash字段进行标记来隐藏它。localhost/User query获取用户列表并从结果中排除PasswordHash,但是如果我这样编写查询:localhost/User?$select=PasswordHash,它将返回数据,即使它应该忽略它 我使用带有[EnableQuery]GetAll()的ApiController公开我的实体框架表用户;方法,该方法返回IQueryable作为结果。 请帮忙 我完全同意Brian

我试图通过使用[JsonIgnore]属性对用户表中的PasswordHash字段进行标记来隐藏它。localhost/User query获取用户列表并从结果中排除PasswordHash,但是如果我这样编写查询:localhost/User?$select=PasswordHash,它将返回数据,即使它应该忽略它

我使用带有[EnableQuery]GetAll()的ApiController公开我的实体框架表用户;方法,该方法返回IQueryable作为结果。
请帮忙

我完全同意Brian Rogers的建议,即使用只公开必要字段的。它既便宜又安全


如果您决定保留现有模型,您可以查看哪个建议使用
[IgnoreDataMember]
属性。

也许您应该使用DTO,而不是直接将EF模型暴露给外部世界。可能的重复