我们正在考虑使用Breeze JS来构建企业应用程序。
Breeze的优点在于我们可以直接从客户端浏览器执行查询。这允许根据用户输入构建动态查询,而不加载不必要的数据。我发现使用Breeze可以创建减少数据传输量/数据转移量1/10甚至更多的业务逻辑,尤其是在使用惰性加载策略时,例如使用像这些查询。
太棒了,Breeze!!!
但是,业务逻辑安全怎么办呢?例如,我们可以有一个仓库,可以隐藏和模糊我们的业务逻辑;然后使用MVC Web API控制器只调用那些存储库C#类。因此,Breeze JavaScript与WebAPI控制器交互,WebAPI控制器与C#存储库交互。控制器始终保持非常简单和易读,但是存储库可能会有大量面向公司使用应用程序的业务逻辑。因此,如果黑客使用例如Google Chrome开发人员控制台检查JavaScript代码,则他/她将看到的只是类似于GetCustomers(),GetProductsForThisId(54)之类的东西。那里没有太多信息可以被看到(或被盗)。因为90%的业务逻辑将位于服务器上的C#存储库中。
Breeze.js如何处理这个问题?
如果我们开始将查询和业务逻辑“从控制器的C#移动到Breeze JavaScript”,则需要考虑我们的系统是基于成员身份的。我认为,我们在JavaScript中向客户端公开的查询越多,我们的软件就越容易受到攻击,我们就越告诉黑客如何攻击我们的网站并可能窃取信息。