在 BreezeJS 安全吗?
中与数据库进行交互例如,如果我使用以下代码,它会直接在javascript中清楚地显示数据库名称,表和查询本身。它是否与数据库建立了安全连接?
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 :(得分:4)
“var manager = new breeze.EntityManager('api / northwind');”没有说明数据库的任何内容。它是MVC控制器的路由(在本例中为webapi)。
行“var query = new breeze.EntityQuery()。from(”Employees“);”与数据库没有任何关系,它是你控制器中的methd的名称。
考虑到你可以使用mvc提供的机制来安装控制器(比如Authorize属性),我看不到任何使用breeze的风险。
答案 1 :(得分:2)
breeze.js
的安全性最终落在用于实际运行查询的编程语言上。正如我在文档中看到的那样,它主要用于ASP。
检查TODO sample,执行操作调用/api/todos/SaveChanges
,其有效负载为:
{
"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
}
}
唯一敏感的是 Id 。即使您不使用JavaScript,您仍然需要以某种方式公开某些数据。我不是说这是最好的方式,但这并没有我能想到的任何直接的缺点。至少不在JS组件中。
它代表应用程序(就像在任何情况下一样)来清理用户的任何输入。这包括任何AJAX调用,无论是否 breeze 。
如果您可以使用一些用于清理/运行查询的ASP代码进行评论,我们可以提供更多有关此问题的见解。
总结一下。没有问题。 JavaScript本身并不连接到数据库,因此它没有任何固有的安全问题。