使用backbone.js时如何防止用户删除所有数据

时间:2013-01-25 17:14:28

标签: rest backbone.js

让我们假设我有一些在客户端使用backbone.js的Web应用程序,在服务器端有一些支持DELETE方法的RESTful API。 该应用程序的数据库包含一些类别和帖子,在客户端,我有一个名为“类别”的集合,使用fetch()从服务器使用GET方法检索所有类别。

如何防止任何用户在Firefox中使用chrome或firebug打开他的控制台,浏览我的JavaScript文件,计算我的骨干模型的结构,并从他的控制台运行collections.destroy()并删除我的所有数据库....

我在这里错过了什么吗?

我用谷歌搜索了但没找到答案......

2 个答案:

答案 0 :(得分:1)

当从客户端收到DELETE方法时,您可以通过不执行任何操作来轻松地在服务器端阻止此操作。

如果您使用的是rails,则删除方法将如下所示

def destroy
  #not allowing deletions through the REST api
end

答案 1 :(得分:1)

您必须在服务器端进行一些验证,因为您无法信任来自客户端的内容。

例如,您可以编写一些在执行数据库调用之前运行的安全检查,如下所示(PHP伪代码):

$model = Posts;

if($model->checkUserRights('read')) {

    $model = Posts->findById($_GET['id']);

    echo json_encode($model);

} else {

    echo "You have not the require rights to access ".$model->tableName;

}

在Posts的模型中:

public function checkUserRights($op){

    // Run some code for each possible operations's type   
}

在处理更新请求之前,您还可以添加一些规则来过滤将返回给客户端的值或它们将发布到服务器的值。

这取决于您和您将在服务器上使用的技术。