1

私は実際に、ユーザーの役割ごとに異なるビューを含む会社用のシングルページアプリを開発しています. .

バックエンドで REST API を使用して PHP を使用しているので、かなり安全だと思いますが、クライアント側のセキュリティについては何も知りません。

main.js に次のように、現在のユーザー ロールを使用して App 変数を格納することを考えていました。

require(['jquery',
    'underscore',
    'backbone',
    'marionette',
    'app',
    'routers/adminRouter',
    'routers/userRouter',
    ], function($, _, Backbone, Marionette, App, AdminRouter, UserRouter){

App.vent.on("routing:started", function(){
    Backbone.history.start();
});

App.addInitializer(function(){
    if(userRole==="admin"){
        App.Router = new AdminRouter;
    } else {
        App.Router = new UserRouter;
    }
    App.vent.trigger("routing:started");
});

App.addRegions({
   content: "#main",
   page: "#page",
   dialogs: "#dialogs"
});

App.start();

App.vars = {};

App.vars.userRole = userRole;

App.js は次のとおりです。

define([
   'underscore',
   'backbone',
   'marionette'
   ], function(_, Backbone){

       var App = new Backbone.Marionette.Application();
       return App;
});

変数userRoleは、index.php ページのサーバーからブートストラップする単なるグローバル変数です。これはどのくらい安全ですか?userRoleページの読み込み時に値を変更する方法はありますか? またはApp.vars.userRole、アプリの進行中に変更しますか? コンソールから変数にアクセスすることはできませんAppが、私はクライアント側のプログラミングに非常に慣れていないので、その変数の値に依存できるかどうかを知る必要があります。このような状況にアプローチする最善の方法は何ですか? 前もって感謝します。

4

2 に答える 2

2

したがってuserRole、ページにグローバル変数として配置する限り、それはあなたの側で実行されている他のスクリプトから変更することができます。また、グローバル変数への参照を使用すると、AppこれApp.vars.userRoleも変更されます。これを防ぐために、ディープコピーを作成できますuserRole

しかし、これは単なる理論上の問題です。誰かがあなたの側でスクリプトを正常に実行した場合、あなたはそれよりも大きな問題を抱えています。そのため、彼はログインしたユーザーであなたのAPIを呼び出すことができます。

ログインしたユーザーのモデルを最初のHTMLペイロードでレンダリングするアプローチを使用して、大規模なシングルページアプリを構築しました。これはうまく機能します。コメントで述べたように、セキュリティのすべての部分はバックエンドで実行する必要があります。

于 2012-09-08T18:02:32.827 に答える