0

バックボーン JS を使用してそのビューをレンダリングするアプリケーションがあります (特にモデルなど)。

アプリケーションの一部は管理者ユーザーにのみ表示する必要がありますが、バックボーン テンプレートがこれを認識する唯一の方法は、一部の JS 変数/localStorage/Cookie を設定してそのことを示すことです。

ここで最初に懸念されるのは、もちろんセキュリティです。ここには、User.id、User.isAdmin などのみを実際に格納しています。さらに、管理者に限定されているのはサーバー側の関与のみであるためUser.isAdmin = true、クライアント側で変更を加えてもインターフェイス オプションが提供されるだけで、権限は何もありません。

Cookie はすべての HTTP リクエスト間で送受信され、不必要なオーバーヘッドが発生するため、この種の目的で Cookie を使用することはおそらく嫌われていることを私は知っています。これには正当な理由があります。

したがって、私の質問は、ユーザー認証データについてクライアント側アプリケーションにどのように伝えるのが最善かということです。localStorage アクセスに jStorage (http://www.jstorage.info) を使用していますが、SessionStorage を使用していません。後者は前者よりも適切でしょうか?

4

1 に答える 1

0

一般的に言えば、サーバー上での役割と、場合によっては特権が必要です。このように、悪意のあるユーザーがクライアントを微調整したとしても、ユーザーは制限されたデータに実際にアクセスしたり変更したりすることはできません。ログ アクセスを監査すると、ユーザーが権限のない操作を試みた場合にすぐにわかります。

このようなスキームの下で起こりうる最悪の事態は、ユーザーが管理画面がどのように見えるかを見ることができることです. システムの仕組みを知らせるボタンが表示される可能性があるため、これは違反である可能性があります。

それを保護する必要がある場合は、ユーザーの役割が確認されるまで、アプリの「管理セクション」のテンプレートの読み込みを遅らせることができます。したがって、すべての制限されたセクションは、ほぼ別のアプリ (または実際の別のアプリ) として読み込まれます。そうすれば、ユーザーがクライアントをだまして管理セクションを読み込もうとしても、リクエストがサーバーに送信されたときにモジュールを返すことはありません。サーバーはユーザーが管理者権限を持っていると表示しないためです。

于 2012-09-18T15:05:58.613 に答える