0

在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);  
});
4

2 回答 2

4

行“var manager = new sweep.EntityManager('api/northwind');” 没有说关于数据库的任何内容。它是到 MVC 控制器的路由(在本例中为 webapi)。

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

考虑到您可以使用 mvc 提供的机制来保护控制器(例如 Authorize 属性),我认为使用微风没有任何风险。

于 2013-02-13T07:19:39.130 回答
2

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

检查TODO 示例/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 调用,无论是否通过微风完成。

如果您可以评论一些用于清理/运行查询的 ASP 代码,我们可以就此事提供更多见解。

所以总结一下。没有问题。JavaScript 本身不会连接到数据库,因此它没有任何固有的安全问题。

于 2013-02-13T07:27:02.013 回答