BreezeJS数据库连接安全

问题描述:

正在与数据库交互BreezeJS安全吗?例如,如果我使用下面的代码,它直接在javascript中清楚地显示数据库名称,表和查询本身。它是否与数据库建立安全连接?BreezeJS数据库连接安全

var manager = new breeze.EntityManager('api/northwind'); 

var query = new breeze.EntityQuery() 
    .from("Employees"); 

manager.executeQuery(query).then(function(data){ 
    ko.applyBindings(data); 
}).fail(function(e) { 
    alert(e); 
}); 
+0

检查文档,感觉就好像你正在寻找'var query = breeze.EntityQuery.from(“Employees”);'和'var manager = breeze.EntityManager('api/northwind');' – Khez 2013-02-13 06:52:33

+0

所以!它安全吗? – 2013-02-13 06:58:22

+0

让我们非常清楚:查询中的“员工”是**资源名称**,而不是数据库表名称。该资源的数据来自名称也是“Employees”的数据库表的事实纯粹是巧合。该资源可能被称为“Foos”。当然,实体,表格和服务名称是相同的。但这是开发者的选择。控制器名称与数据库名称相匹配。 – Ward 2013-02-14 06:16:42

最终breeze.js的安全性落在了用于实际运行查询的编程语言上。正如我在文档中看到的,它主要用于ASP。

{ 
    "entities": [{ 
     "Id": 2908, 
     "Description": "Wine", 
     "CreatedAt": "2012-08-22T09:06:00.000Z", 
     "IsDone": true, 
     "IsArchived": false, 
     "entityAspect": { 
      "entityTypeName": "TodoItem:#Todo.Models", 
      "entityState": "Modified", 
      "originalValuesMap": { 
       "IsDone": false 
      }, 
      "autoGeneratedKey": { 
       "propertyName": "Id", 
       "autoGeneratedKeyType": "Identity" 
      } 
     } 
    }], 
    "saveOptions": { 
     "allowConcurrentSaves": false 
    } 
} 

存在标识唯一敏感的事情:

检查TODO sample,做一个行动的有效载荷调用/api/todos/SaveChanges。即使你不使用JavaScript,你仍然需要以某种方式公开某些数据。我并不是说这是做这件事的最好方式,但这并没有我能想到的任何直接的缺点。至少不在JS组件中。

它代表应用程序(就像在任何情况下)清理任何来自用户的输入。这包括任何AJAX呼叫,无论是否使用微风

如果您可以对某些用于清理/运行查询的ASP代码发表评论,我们可以提供更多关于此问题的信息。

综上所述。没有问题。 JavaScript本身不会连接到数据库,因此它没有任何固有的安全问题。

该行“var manager = new breeze.EntityManager('api/northwind');”没有说数据库的任何内容。这是通往MVC控制器的路线(在这种情况下是webapi)。

而行“var query = new breeze.EntityQuery()。from(”Employees“);”与数据库没有任何关系,它是您控制器中的一个方法的名称。

考虑到你可以使用mvc提供的机制来控制控制器(比如Authorize属性),我没有看到使用breeze的风险。

+0

宾果。阻止未经授权访问客户的地方是使用安全控制器方法的服务器上。 我发现沃德在这里的答案有帮助: http://stackoverflow.com/questions/13662496/how-is-breeze-js-handling-security-and-avoiding-exposing-business-logic?rq=1 – John 2013-02-13 18:21:18