1

私はいつも、リクエストごとにデータベースのアカウント アクセス権限をチェックする方がよいのか、それともセッション状態でキャッシュ (ACL など) をキャッシュする方がよいのか疑問に思っていました。

私の現在のケースは特にミッション クリティカルではありませんが、キャッシュされた資格情報を更新するためにログアウトしてから再度ログインしなければならないのは面倒だと思います。また、TTL を使用した一時データ ストアの使用も検討しました。両者のベストとも言えそうです。

4

1 に答える 1

1

セキュリティに関しては、毎回 DB のアクセス許可を確認することをお勧めします。セキュリティの脆弱性は、セッションの作成後にユーザーのアクセス許可が削減された場合、本来よりも高いレベルのアクセスを達成している可能性があるということです。

開発サイクルの初期段階であれば、完全なクエリを実行せずに安全を確保するためにできることがいくつかあります。役割ベースのアクセス制御 (RBAC)を使用している場合は、ユーザーの役割を含む高速ルックアップ テーブルを格納できます。セッション中にユーザーの役割が変更された場合、ルックアップ テーブルでアクセス許可を「ダーティ」とマークすると、新しい役割について DB にクエリが実行されます。ユーザーの役割が変わらない限り、DB にクエリを実行する必要はありません。ルックアップ テーブルは基本的に、ユーザーのロールが変更された場合にバックエンドで設定できる単なるフラグです。粒度が細かすぎなければ、これと同じ手法を個別のアクセス制御でも使用できます。そうであれば、サーバー上で膨張し始めます。

開発サイクルが遅れている場合、またはパフォーマンスよりもシンプルさを重視する場合 (通常はシンプルな方が安全です)、DB の負荷が重くなりすぎない限り、毎回 DB にクエリを実行します。

于 2013-06-19T02:48:57.103 に答える