検索

PHPGACL アプリケーション権限制御

パーミッション制御の設計は、システム開発およびフレームワーク構造において常に頻繁に議論される問題であり、高精度を提供できるシンプルかつ効果的なパーミッション制御の粒度をどのように設計するかが、私たちが議論してきた問題です。最近、Joomla の ACL セクションを調べていて、このフレームワーク phpGACL
を発見しました。 存在する 私は個人的な開発プロセスでよくこの問題に直面します。単純な粗い制御と複雑な細かい制御が必要になると、さまざまな非常に複雑な構造とコードの記述に直面することになります。 phpGACL は非常に効果的な権限制御を提供します。つまり、非常に豊富な権限制御を提供でき、開発と設計も非常に簡単です。まずはphpGACLフレームワークを紹介しましょう。

?

この記事は phpGACL ユーザー マニュアルから翻訳されたものです

phpGACL は、任意の (ユーザー、リモート ホスト) オブジェクトが他の (ページ、データベース) オブジェクトにアクセス許可制御を適用できるようにする一連の関数です。 phpGACL は成熟した権限制御とシンプルな管理を提供し、速度も非常に高速です。さらに重要なのは、完全にオープンソースであることです 、次のアドレスから入手できます http://phpgacl.sourceforge.net/

これを実行するには、まずアクセス許可制御データを保存するリレーショナル データベースが必要です。phpGACL は ADODB ライブラリを通じてデータベースに接続するので、簡単に接続できます。 mysql、postgresql、oracleなど。 Joomla の ACL システムには、主に joomla がデータベース層での使用を放棄したため、いくつかの軽量の変更が加えられています。 ADODB は、joomla のデータベース抽象クラスを使用してデータベース

を保存します

権限制御について理解する

パーミッション制御を説明する最良の方法は、退屈な概念を説明するのではなく、いくつかの具体的な例を使用することです。ハンはミレニアム ファルコン宇宙船の船長であるチューイは副操縦士であり、宇宙船にはルーク、オビ=ワン、R2D2 などの乗客も乗っています。 ,C3PO.Han は、コックピット、電源キャビン、休憩キャビン、兵器キャビンなど、宇宙船の各キャビンに対するアクセス許可を定義する必要があります。

ハン機長は「チューイと私にはあらゆる場所に入る権利があるが、異例のハイパードライブ修理の後、チューイが再び動力室に近づくことを禁止し、すべての乗客が制限された」と述べた。 「休憩キャビン内です。」 これから議論する許可システムは、実際には、宇宙船に乗っている全員が各キャビンに入る許可を含むものであり、3 番目のケースはありません。

ここで、上記の状況を許可マトリックスとして説明します。これは、誰がどこに入る権利があるのか​​という質問に対応します。詳細については、次の図で説明します (0 は許可を表し、X は拒否を表します)。


PHPGACLの使用許可制御 リスト これは、ハン船長が許可制御を設定する必要があるキャビンを表し、行はキャビンにアクセスする必要がある人を表します。抽象的に言えば、「キャビン」は制御権限を必要とするものであり、ここでは「特権制御オブジェクト」と呼びます。 「Access? Control Objects (ACO)」と同様に、「personnel」はアクセスするために許可が必要なものです。ここではこれを「Permission Requirement Object」と呼びます。 リクエスト オブジェクト(ARO)。私たちの用語では、職員が客室に入るのに許可が必要であるということは、ARO が ACO にアクセスするのに許可が必要であることを意味します。添付ファイル許可オブジェクト Access と呼ばれる 3 番目のタイプのオブジェクトもあります。 eXtention Object (AXO) は後で説明しますが、いくつかの属性を共有し、一緒に許可オブジェクトを形成します。

権限マトリックスを使用して権限を管理するのは比較的簡単ですが、いくつかの欠点もあります。

1. 彼は細心の注意を払い、必要に応じて全員を管理できます
2. 権限は一目瞭然です。誰がそこに入る権利を持っていますか? 人と小屋の間の交差点を見つけさえすれば、答えは見つかります。
3. 彼にとって、6 人の乗客と 4 つの客室は非常に小さな権限システムを管理するのは困難ですが、数千の乗客と数百の客室がある場合、それを管理するためにマトリックスを適用するのは非常に困難になります。 、これには多大な労力と正確な判断が必要です。権限マトリックスがこのようなシステム管理に適していることは困難です
4. 統計的な問題。上の図が発電室に誰が入ることができるかをカウントする場合は、比較的明らかですが、次のような図の場合は、おそらくさらに問題になるでしょう

PHPGACLの使用許可制御

phpGACL を使用して権限を定義します

権限マトリックスは大規模な権限システムの権限管理には非常に不適切であるため、この作業を完了するには、マトリックスの利点を継承しながら、欠点も捨てなければなりません。 phpGACL は非常に優れたソリューションです。

phpGACL は、ボトムアップでアクセス許可を記述するのではなく、トップダウンの順序でアクセス許可を記述し、ユーザーが多数のグループを使用してアクセス許可を管理できるようにする柔軟なシステムです。 誰がどこに行く許可を持っているかを簡単に知ることができます。 ARO ツリーは、グループと ARO オブジェクトを定義するために phpGACL で使用されます。フォルダーやファイルと同じツリー関係を持ちます。ここで、グループはフォルダーのようなもので、ARO オブジェクトは 書類。

次に、ハンの宇宙船の乗客の ARO ツリー、つまり ARO を設計します。まず、宇宙船の人々の分類を設計します。ここでは、ハンとチューイが船を運転しており、残りは乗客です。 > ミレニアムファルコン乗客グループ
C─rew???????????????????????????グループ
│─ハン?????????????????????ARO
│─チューイ??????????????????ARO
─乗客???????????????グループ
─オビワン??????????????????ARO
─ルーク????????????????????????ARO
─R2D2????????????????????????ARO
─C3PO????????????????????????ARO

このツリーは実際には権限に関連付けられておらず、ARO オブジェクトを分類しているだけです。アクセス許可を適用するとき、実際には、ACO オブジェクト、つまりキャビンを ARO ツリー上のグループまたは ARO オブジェクトに割り当てるだけです。ハン氏は「デフォルトでは、どの部屋にも誰も入ることができないが、乗務員はどの客室にも入ることができ、乗客は休憩室にのみ入ることができる」と述べた

ミレニアムファルコン乗客
─クルー??????????????????[許可:すべて]
│─ハン
チューイ│─
P─アッセンジャー?????????[許可:ラウンジ]
─オビワン
─ルーク
─R2D2
─C3PO

ここでこのツリーを上から下まで説明します。まず、デフォルトの許可は常に拒否されているため、最初は乗務員を含む全員がどの船室にも入ることが拒否されますが、ハン氏は「乗組員はどの船室にも入ることができます」と言いました。 これは、権限が上書きされ、デフォルトの権限の上書きが許可される場合に発生します。そのため、最終的に乗務員はどの客室にも入る権利を持ちますが、乗客はラウンジ キャビンにのみ入ることが許可されます。権限を説明するこの方法は、マトリックスよりも明確であり、次のことを明確に行うことができます。 誰がどこに行けるのか、そしてなぜそのような許可があるのか​​を理解する (ハンとチューイは同じ乗組員の一員であるため、船内のどこにでも行くことができます)

要約すると

アクセス制御オブジェクト (ACO) アクセス制御オブジェクトは、Web ページ、データベース、キャビンなど、アクセスを制御する必要があるオブジェクトです。

アクセス要求オブジェクト (ARO) は、人やリモート コンピューターなど、アクセス許可を必要とするオブジェクトです。
ARO? ツリーは、ARO オブジェクトとグループの階層構造を定義します。グループには、ARO オブジェクトまたは他のグループを含めることができます。
ARO ツリーのデフォルトでは、常にアクセスが拒否されます
権限割り当ての原則。特定のメソッドを使用して ARO ツリー全体を走査し、表示される各 ACO オブジェクトの ARO または GROUP に特定の権限を割り当てます

この記事では、phpGACL の権限制御原則と基本概念について簡単に説明します。GACL 制御原則の詳細については、phpGACL マニュアルを参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションの概念を簡単に説明してください。PHPセッションの概念を簡単に説明してください。Apr 26, 2025 am 12:09 AM

phpssionsStrackuserdataacrossmultiplepagerequestsusingauniqueidstoredinacookie.here'showtomanageetheemefectively:1)Startassession withsession_start()andstoredatain $ _ session.2)RegeneratesseSsessidafterloginwithsession_id(the topreventes_id)

PHPセッションに保存されているすべての値をどのようにループしますか?PHPセッションに保存されているすべての値をどのようにループしますか?Apr 26, 2025 am 12:06 AM

PHPでは、次の手順を通じてセッションデータを繰り返すことができます。1。session_start()を使用してセッションを開始します。 2。$ _Sessionアレイのすべてのキー価値ペアを介してforeachループを反復します。 3.複雑なデータ構造を処理する場合、is_array()またはis_object()関数を使用し、print_r()を使用して詳細情報を出力します。 4.トラバーサルを最適化する場合、ページングを使用して、一度に大量のデータの処理を避けることができます。これにより、実際のプロジェクトでPHPセッションデータをより効率的に管理および使用するのに役立ちます。

ユーザー認証にセッションを使用する方法を説明します。ユーザー認証にセッションを使用する方法を説明します。Apr 26, 2025 am 12:04 AM

このセッションは、サーバー側の状態管理メカニズムを介してユーザー認証を実現します。 1)セッションの作成と一意のIDの生成、2)IDはCookieを介して渡されます。3)サーバーストアとIDを介してセッションデータにアクセスします。

PHPセッションにユーザーの名前を保存する方法の例を挙げてください。PHPセッションにユーザーの名前を保存する方法の例を挙げてください。Apr 26, 2025 am 12:03 AM

tostoreauser'snameInappession、starthessession withsession_start()、thensignthenameto $ _session ['username']。1)ousession_start()toinitializethessession.2)assighttheuser'snameto $ _ session ['username']

PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。