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);
});
最终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的风险。
宾果。阻止未经授权访问客户的地方是使用安全控制器方法的服务器上。 我发现沃德在这里的答案有帮助: 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
检查文档,感觉就好像你正在寻找'var query = breeze.EntityQuery.from(“Employees”);'和'var manager = breeze.EntityManager('api/northwind');' – Khez 2013-02-13 06:52:33
所以!它安全吗? – 2013-02-13 06:58:22
让我们非常清楚:查询中的“员工”是**资源名称**,而不是数据库表名称。该资源的数据来自名称也是“Employees”的数据库表的事实纯粹是巧合。该资源可能被称为“Foos”。当然,实体,表格和服务名称是相同的。但这是开发者的选择。控制器名称与数据库名称相匹配。 – Ward 2013-02-14 06:16:42