- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在考虑使用breeze js来构建企业应用程序。
轻而易举的是,我们可以直接从客户端浏览器执行查询。这允许基于用户输入构造动态查询,而无需加载不必要的数据。我发现使用Breeze可以创建业务逻辑,从而在使用延迟加载策略时将数据传输/传输减少1/10甚至更多。使用像these这样的查询
万岁的微风!!!
但是业务逻辑安全性如何?
例如,我们可以有一个存储库,在其中可以隐藏,隐藏和模糊我们的业务逻辑。然后使用MVC Web API Controller 仅调用那些存储库C#类。因此,Breeze JavaScript与WebAPi Controller 通信,而WebApi Controller 与C#存储库通信。 Controller 将始终保持非常简单和易于阅读,但是存储库最终可能会为使用该应用程序的公司提供许多业务逻辑。因此,例如,如果黑客使用Google Chrome开发人员的控制台检查JavaScript代码,则他/她将看到的仅是GetCustomers(),GetProductsForThisId(54)之类的东西。那里看不到(或被盗)的信息太多。因为90%的业务逻辑将驻留在服务器上的C#存储库中。
breeze.js如何处理呢?
如果我们开始将查询和业务逻辑“从 Controller 的C#转移到轻巧的JavaScript”,则必须考虑我们的系统是基于成员资格的。我认为我们用JavaScript暴露给客户端的查询越多,我们的软件就越容易受到攻击,并且我们告诉黑客的方法越多,它们如何入侵我们的网站并可能窃取信息。
最佳答案
安全是至关重要的问题。仔细考虑客户端公开的数据和逻辑是明智的。我们如何才能将这些情绪转化为适合SO答案的具体问题?
Breeze的任何内容都不应使您向JavaScript客户端公开业务逻辑。您可以(并且应该)在存储库和/或 Controller 方法中安全地锁定此类逻辑。
但是我很难理解客户端如何查询自己是需要保护的业务逻辑。查询名称以“A”开头的客户的危险在哪里?
您可能会担心查询净值大于$ 100,000的客户。但是故障不在查询中。错误可能是通过任何方式将此类客户信息暴露给未经授权的用户,无论是通过附加到查询的Breeze where子句还是通过调用名为GetCustomers()的服务。
阻止未经授权访问客户的位置位于服务器上,您可以在Breeze Controller 操作方法中轻松地做到这一点,就像在GetCustomer()方法中返回IQueryable一样。在这两种情况下,您都必须承担负担,以在 Controller 和公开的方法中施加必要的安全性约束。
您编写 Controller 。您编写存储库。您有权访问用户的权限。您可以完全掌控,并且拥有毫不妥协的曝光能力,可以根据自己的意愿进行曝光。
FWIW,您的Breeze EntityManager
可以调用不返回IQueryable<Customer>
的服务方法。它可以调用Web Api Controller 方法,例如IEnumerable<Customer> GetCustomers()
或Product GetProductForId(int id)
。我认为您将失去Breeze的查询工具的灵活性,而不会获得任何安全性。但那只是我的个人意见。无论选择哪种方式,Breeze都会支持您的选择。
我很乐意尝试回答一个更具体的“如何”问题。
关于breeze - breeze.js如何处理安全性并避免暴露业务逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13662496/
我对 DBT 还很陌生,正在尝试探索如何进行曝光。我已经阅读了文档 ( https://docs.getdbt.com/docs/building-a-dbt-project/exposures ),
我对 DBT 还很陌生,正在尝试探索如何进行曝光。我已经阅读了文档 ( https://docs.getdbt.com/docs/building-a-dbt-project/exposures ),
这在Python中合法吗?似乎有效... 谢谢 # with these lines you not need global variables anymore if __name__ == '__m
我正在尝试使用 tomcat Docker 镜像打包一个 war 文件。我正在尝试在图像中公开 tomcat 端口以供外部访问。 这是我的docker文件 FROM tomcat8:3.0.0 C
我一直在尝试通过 ip 连接到 docker 容器,但再次失败。当我使用“docker inspect container-id”时,我得到了这个结果。 我的虚拟盒子默认设置是: 有人可以帮我解决这个
我知道要在 docker 容器中公开端口,您可以使用 -p标志(例如 -p 1-100:1-100 )。但是有没有一种很好的方法可以将大部分可能的端口从容器暴露给主机?例如,如果我在位于 VM 中的容
我正在开发一个带有 ktor 应用程序的 Kotlin,并且我使用暴露为 ORM。我有一个引用另一个表的表。这种关系是多对一的。前任: object Users : IdTable() { ov
我正在尝试学习 polymer ,并且正在尝试制作一个基本的消息传递框架。所以我创建了一个名为 messages-framework 的小 polymer 元素,它将显示消息,并在 3 秒后删除该消息
我的问题很简单也很笼统:当调用 RESTFUL API 时,无论是我的还是外部的,将 token 暴露在前端是否是常见做法/可以?例如,在 Google map api 的文档中,他们建议使用以下代码
我们有一个包含 1000 万条记录的数据库表。我们不想使用 auto_increment,因为那样会让我们的用户知道我们有多少条记录。我们不想将其暴露给我们的竞争对手。我看到的问题是使用 UUID 或
我有以下用户表对象和实体类: object UserTable : IntIdTable() { val name = varchar("name", 256) } class User(id
对于部署在 Google kubernetes 引擎上的基于微服务的示例架构,我需要帮助来验证我的理解: 我们知道服务应该对 pod 副本集的流量进行负载平衡。 当我们创建一个 nginx 入口 Co
String caminhoFoto = getExternalFilesDir(null) + "/"+ System.currentTimeMillis() +".jpg";
我目前正在编写一个用 Parcel js 打包的 TypeScript 模块化库。应用程序将使用该库来实现特定功能。消费应用程序/网页将在其 html 中添加对我的库的引用,例如。 我想在我的库中公
mongodb 生成的 ID 在您的所有文档中都是唯一的,将其暴露给客户端的风险是什么?就像我有一个 ID 为 12345676543 的用户名 James,将它暴露给 url 是明智的吗 examp
场景:假设攻击者通过对.apk文件进行逆向工程,获取了应用中使用的Push Registration Service的SENDER ID。攻击者开发了一个类似的虚假应用程序,它具有相同/不同的包名,并
当使用 Spring Boot starter 进行 graphql 时,数据获取时抛出的所有异常都在输出控制台中显示为“执行查询时的内部服务器错误”我希望我抛出的 e.message() 的 Gra
我正在尝试使用 Docker 运行 ASP.NET Core 应用程序,并且我想将外部 wwwroot 文件夹公开给容器,以便当我从外部对其进行更改时,它们会自动对我的应用程序可用。这可能吗,使用卷?
我构建了一个 WCF 服务,它为 Web 应用程序公开自身,它接受一个对象并在客户端机器上打印数据。在我的开发机器上运行良好,该服务在我安装它的任何机器上启动并运行。我可以在客户端机器的 Web 浏览
我似乎无法弄清楚这一点。我有一个使用 scikit-learn 训练的模型,保存到一个 .pkl 文件中,我想制作一个 API 来根据它进行预测。 我已经有了进行预测的代码,它在控制台/单元测试中运行
我是一名优秀的程序员,十分优秀!