0

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

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

我在这里错过了什么吗?

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

4

2 回答 2

1

当从客户端接收到 DELETE 方法时,您可以通过不执行任何操作轻松地在服务器端防止这种情况发生。

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

def destroy
  #not allowing deletions through the REST api
end
于 2013-01-25T17:29:30.940 回答
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   
}

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

这完全取决于您以及您将在服务器上使用什么技术。

于 2013-01-25T18:27:47.460 回答