0

クライアント側でbackbone.jsを使用し、サーバー側でDELETEメソッドをサポートするRESTfulAPIを使用するWebアプリがあるとします。アプリのデータベースにはいくつかのカテゴリと投稿が含まれており、クライアント側には、fetch()を使用してGETメソッドを使用してサーバーからすべてのカテゴリを取得する「categories」と呼ばれるコレクションがあります。

ユーザーがChromeでコンソールを開いたりFirefoxでfirebugを開いたり、JavaScriptファイルを調べたり、バックボーンモデルの構造を調べたり、コンソールからcollections.destroy()を実行したりして、すべてのデータベースを削除したりしないようにするにはどうすればよいですか... 。

ここで何かが足りませんか?

私はそれをグーグルで検索しましたが、答えが見つかりませんでした...

4

2 に答える 2

1

クライアントから DELETE メソッドを受け取ったときに何もしないことで、サーバー側でこれを簡単に防ぐことができます。

Rails を使用している場合、delete メソッドは次のようになります。

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 に答える