Breeze.js - 保护IQueryable调用

时间:2012-12-13 15:32:26

标签: security iqueryable breeze

我对此很陌生,但我已经开始了解使用Breeze公开IQueryable<>的安全风险。有人请告诉我一些最佳实践(或仅仅是一些建议),以保护在JavaScript中公开的IQueryable集合吗?感谢。

2 个答案:

答案 0 :(得分:4)

我不会通过IQueryable公开任何应该通过随机查询发送给客户端的数据。因此可以展示投影或DTO。

我不确定这是否能回答你的问题...你担心“安全风险”是什么?

答案 1 :(得分:3)

我也是第二个问题。但是在Ward问的问题中添加一些细节:

在保护可查询服务时,会想到两个传统问题:

1)垂直安全性:哪些项目是当前登录的用户(基于用户身份或角色),不允许在UI中查看。那些需要从可查询列表中删除。 IMO,这可以通过在返回的IQueryable上链接一些排除逻辑,作为可查询的ActionFilter魔法的一部分来完成。 2)水平安全性:某些模型包含不适合登录用户查看(和/或编辑)的字段。这更难以处理,因为它不仅仅是从返回的IQueryable中删除实例。返回的类具有不同的形状,因此可以由json格式化程序处理,省略基于安全性的字段(AFAIK搞砸了breeze元数据)或者返回DTO,在这种情况下,因为元数据中不存在DTO它不是一个完整的生命周期(可更新)类? (我要求这不说明)

我希望看到内置支持或易于实现数字2的配方。也许一些示例代码修改客户端元数据,使DTO与模型对象完美配合。新的VS 2012 SPA模板(在TodoList应用程序中)似乎在可查询和插入/更新方面推送模型对象的DTO变体。这类似于传统的MVC模型视图......

最后 - 我添加了一个请求来自动处理插入和更新的重叠安全问题。这是2)的互惠方面。某些用户不应该能够编辑某些字段。

相关问题