問題タブ [access-control]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
8552 参照

c# - C#: ディレクトリを読み取ったり削除したりできるかどうかを確認する方法

一連のディレクトリを再帰的にループします。それらのいくつか ( D:\$RECYCLE.BIN\S-1-5-20など) は、System.UnauthorizedAccessException. 私はそれをキャッチして先に進むことができると思いますが、事前にそれを把握したいと思います.

だから、私がDirectoryInfoオブジェクトを持っているとき。許可されているかどうか、また許可されているGetDirectories()可能性があるかどうかを確認するにはどうすればよいDelete()ですか?

0 投票する
4 に答える
441 参照

c++ - 友情スコープc++

「C++プログラミング言語」のセクション11.5.1で、BjarneStroustrupは次のように書いています。

メンバー宣言と同様に、フレンド宣言は名前を囲んでいるスコープに導入しません。

例えば:

大規模なプログラムや大規模なクラスの場合、クラスがそれを囲むスコープに「静かに」名前を追加しないのは良いことです。多くの異なるコンテキストでインスタンス化できるテンプレートクラス(第13章)の場合、これは非常に重要です。

ただし、次のセクションでは、クラスが以前に定義されているか、フレンドを宣言しているクラスをすぐに囲む非クラススコープで定義されている必要があることを説明します。

私の質問は、クラスが以前に定義されているか、クラスをフレンドと宣言しているクラスをすぐに囲む非クラススコープで定義されている必要があるため、最初の例でXformは、おそらくクラスがスコープ外になることはありません。Matrixクラスの定義の前に定義されています。さらに、フレンドクラスを事前に定義するか、付与者のクラスの直後に定義する必要があるという制限があるため、フレンドクラスがスコープに含まれないという状況は考えられません。

第二に、このセクションでのBjarneの私の解釈は正しいですか?

  • フレンドクラスの場合のみ、フレンドクラスは、囲んでいるスコープで事前に定義されているか、非クラススコープの直後に定義されている必要があります。
  • 関数の場合、囲んでいるスコープで事前に宣言されている必要があります。または、タイプ=='フレンドシップ付与者の'クラスの引数を持つことによっても見つけることができますか?
0 投票する
3 に答える
912 参照

java - オブジェクトの粒度を持つ Java のセキュリティ フレームワーク

オブジェクトの粒度を持つ Java Web アプリケーションのセキュリティ フレームワークを探しています。

つまり、URL やロールだけでフィルタリングするのではなく、システム内のドメイン オブジェクトの特定のユーザー所有権でフィルタリングしたいということです。

たとえば、ユーザーとユーザーMessageを持つオブジェクトがある場合、すべてのメッセージが送信者によって RW になり、受信者によって RO になるように構成できるようにしたいと考えています。SenderReceiver

または、たとえば、すべてのユーザー プロファイルはすべてのユーザーが表示できますが、所有者のみが編集できます。

もちろん、このルールはメタ データ (注釈、xml ファイルなど) を使用して定義し、ビジネス ロジックに埋め込まないようにしたいと考えています。

そんな野獣いる?できればオープンソース。

0 投票する
7 に答える
11844 参照

php - CodeIgniter で管理ページを作成する最良の方法は?

私は CodeIgniter でアプリに取り組んでおり、アプリケーション内のいくつかのオブジェクトの管理ページを作成したいと考えています。これらを MVC 構造に配置するためのより良い方法は何か疑問に思っています。

アイデア 1: 各コントローラーに管理機能を用意し、必要なすべての管理ページをその機能に追加します。URL の例:domain.com/articles/admin

アイデア 2 多くの異なるモデルを参照する必要がある新しい管理コントローラーを作成し、そこにすべての管理ページを配置します。URL の例:domain.com/admin/articles

どちらの方法が良いでしょうか?

明確化のために編集:管理機能とは、任意のオブジェクトに対して基本的な CRUD アクションを実行でき、そのオブジェクトのすべてのリストを表示できることを意味します。

0 投票する
4 に答える
586 参照

php - 役割によってアクセス可能なDrupalセクション

Drupalユーザーの役割に基づいて、Drupalサイトのコンテンツへのアクセスを制限する必要があります。

http://site.com/managers/intro

http://site.com/managers/reviews

http://site.com/managers/up-for-raises

コンテンツは複数のコンテンツタイプにすることができ、1つの特定のコンテンツタイプに限定されません。これらのコンテンツタイプはサイトの他の場所で使用されるため、コンテンツタイプ全体をロックダウンすることはできません。

作成時にメニュー設定によってすべてのノード/ビューをそれらのアドレスに配置できますが、template.phpの一連の前処理関数以外のロールを介してアクセスを制限する方法がわかりませんが、それを行うための間違った方法である。

モジュールを検索して#drupal-support IRCを尋ねましたが、制限要因としてdrupalの役割を使用する結果は得られませんでした。

0 投票する
3 に答える
1769 参照

iphone - サーバーへのアクセスを iPhone アプリに制限する

サードパーティのクライアントがサーバーにアクセスできないようにしたいクライアント/サーバー iPhone ゲームを構築しています。これには 2 つの理由があります。1 つ目は、私の収益モデルはクライアントを販売し、サービスを提供することです。2 つ目は、不正行為を助長するクライアントの急増を避けたいということです。

私はサーバーの最初のバージョンを Rails で書いていますが、ある時点で erlang に移行することを検討しています。

私は2つのアプローチを検討しています:

  1. 「ユーザー名」(GUID など) を生成し、アプリに付属のシークレットでハッシュ (SHA256 または MD5) し、その結果を「パスワード」として使用します。クライアントがサーバーに接続すると、両方が https 経由の HTTP 基本認証を介して送信されます。サーバーは同じシークレットでユーザー名をハッシュし、それらが一致することを確認します。

  2. iPhone アプリでクライアント証明書を送信します。サーバーは、クライアント証明書が存在することを要求するように構成されています。

最初のアプローチには、シンプルでオーバーヘッドが少ないという利点があり、アプリ内のシークレットを難読化するのが簡単になる場合があります。

2 番目の方法は十分にテストされ、証明されていますが、オーバーヘッドが高くなる可能性があります。ただし、クライアント証明書に関する私の知識は、「デルタ航空の機内誌で読む」レベルです。これにより、どのくらいの帯域幅と処理のオーバーヘッドが発生しますか? リクエストごとに転送される実際のデータは、キロバイトのオーダーです。

0 投票する
3 に答える
3495 参照

design-patterns - アクセス制御の設計パターン

私は PHP アプリケーションに取り組んでおり、いくつかのオブジェクトにアクセス制御を追加したいと考えています。この質問は言語固有のものではないと感じているため、この質問に PHP のタグを付けませんでした。

「サービスクラス」があるとします

多くのサービスがこれを基本クラスとして使用します。疑似例の 1 つを次に示します。

後で、アクセス制御を追加したいと思います。サンプルの「getCompanyInfoById」メソッドは「読み取り」操作であるため、これには「読み取り」権限が必要です。

この時点で、次の方法でこれを実装できます。

  1. アクセス制御を Service クラスに追加します。すべてのメソッド (getCompanyInfoById など) は、操作を完了して結果を返す前に、「hasPrivilege」メソッドを内部的に呼び出す必要があります。
  2. 内部オブジェクトでメソッドを呼び出す前に権限をチェックするある種の Proxy オブジェクトですべての Service オブジェクトをラップします。
  3. アクセス制御を完全に分離し、「呼び出し元」にメソッドを呼び出す前に権限を確認させます。

すべてのオプションの短所:

  1. これには、すべてのサービスを変更する必要があり、アクセス制御を認識する必要があります。これは関心の分離に反すると思います。
  2. これにより、ポリモーフィズムなどの OOP 機能が壊れます。呼び出し元は、サービスがサポートするインターフェイスを認識しなくなります。
  3. これは最も柔軟ですが、パーミッションのチェックが暗黙的に行われるという大きな欠点があります。開発者が「忘れる」か、複雑なコードパスにより、許可されていないサービスが呼び出される可能性があります。

これに完全にアプローチするより良い方法はありますか?

0 投票する
2 に答える
11994 参照

sql-server - 特定のユーザーアクセス権を照会する方法

継承している古いデータベースがあります。アクセス権はどこにも明確に定義されていないので、誰もがアクセスできるようにするための簡単な方法を探しています。データベースにメンバーシップロールに属していないユーザーがいるとします。ただし、特定のテーブルに対して特定のことを行うためのアクセス権が付与されています。たとえば、テーブルXでselectクエリを実行し、テーブルYで更新クエリを実行できます。各ユーザーのプロパティに移動することで、それらが何を持っているかを確認できます。ただし、これらすべてが定義されていて、簡単にクエリできるシステムテーブルがどこかにある必要があると思います。このクエリはどのようになりますか。

参考:SQLServer2005を使用しています

更新:サーバー上のすべてのデータベースに対してこれを行う方法もありますか?

0 投票する
2 に答える
3793 参照

access-control - アクセス制御-RBACは階層的なユーザー管理システムに実装する価値がありますか?

最近、アプリケーションで使用するのに最適なアクセス制御モデルを検討しています。私はRBACについて読んでいますが、役割の概念は優れています(特に、さまざまな権限が大量にある場合)。ただし、次のような階層型ユーザー管理にどの程度適用できるかはわかりません。

すべてのユーザーは1つ以上のグループに属しています。グループはツリーに編成されます(ディレクトリ構造のように)。グループとユーザーの両方にアクセス許可(またはRBACについて話している場合はロール)を割り当てることができ、おそらく何らかの継承(つまり、ユーザーとグループが属するグループのアクセス許可を継承する)とオーバーライド機能が必要です。グループ自体の目的は、権限の管理だけではありません。アプリ内で他の用途もあります。

パーミッションは非常に細かく、ロールはよりモノリシックであるため、パーミッションがロールなしで使用された場合(「ロール」はRBAC用語でのパーミッションのコレクション)、上記のすべてをさらに設計して実装するのにそれほど問題はないと思います。グループ/ユーザーレベルでのアクセス許可の継承/オーバーライドの実装はそれほど難しくありません。ロールで同じことを行うのはおそらくもっと難しいでしょうが、一方で、ロールは平均的なユーザーにとってより簡単に理解できます。

現在、私自身、「許可のみ」のモデルに傾倒しています。理由は次のとおりです。

  • アプリにはおそらく30を超える異なる権限はありません。
  • グループ自体を使用して権限を設定できます。これにより、ロールの利点の1つである複数のユーザーの権限管理が容易になります。
  • コンセプトは明確で、実装が簡単なようです

ただし、「許可のみ」のモデルよりも優れた、論理的で理解しやすい役割ベースのモデルが提示された場合は、それを真剣に検討します。上記の要件に適用/適応できる、明確に定義されたRBACモデル(ペーパー、実装など)がすでに利用可能ですか(私はしばらくの間それらを探していましたが、私が見つけたものは制限が多すぎるか、しませんでした階層的なユーザー管理を取り入れないでください)?この問題についてのあなたの全体的な意見は何ですか?この場合、RBACはそれだけの価値がありますか?

0 投票する
1 に答える
128 参照

php - CakePHP での特権に基づいて、ユーザーをさまざまな機能にルーティングするにはどうすればよいですか?

これは以前に尋ねられた可能性があり、同様の解決策を見たことがあります...おそらく私はこれについて間違って考えています。

ユーザーが管理者の場合は user/edit という 1 つのリンクが必要です。基本ユーザーの場合は admin_ にルーティングする必要があります。基本的なユーザーの場合は user_ などにルーティングする必要があります。滑らかな方法でこれを行う方法はありますか?

user/admin_edit と入力すると、user/edit に移動するような、逆のことを行うソリューションを見てきました...