セキュリティは、Webサイトまたはアプリケーションを開発する際の重要な要素です。ユーザーに適切なアクセス許可を設定し、特定のアクセス許可を持つユーザーのみが対応する機能とリソースにアクセスできることを確認する方法は、すべての開発者が解決する必要がある問題です。ロールベースの許可制御(RBAC)は、一般的な許可管理方法です。この記事では、PHPを使用してロールベースの認証コントロールを実装する方法をガイドします。
ロールベースの許可制御を実装する前に、まず「役割」と「許可」の概念を明確にする必要があります。
役割は、システム内のユーザーのIDを表します。たとえば、「管理者」、「通常のユーザー」など。各役割には、ユーザーが実行できるものを制限するために異なるアクセス許可が与えられます。
権限はシステム定義であり、役割がどのリソースを実行またはアクセスできるかを決定します。権限には、「データの読み取り」、「データの変更」、または「データの削除」などが含まれます。
役割と権限の組み合わせにより、ユーザーはシステムの操作許可を効果的に制御できます。
ロールベースの許可制御を実装するには、通常、データベースにロールと許可情報を保存する必要があります。 2つのテーブルを作成できます。1つは役割情報と、許可情報を保存するものです。ここに、役割と許可表を作成するSQLステートメントの例があります。
テーブルロールを作成します( id int auto_incrementプライマリキー、 名前前varchar(255)はnullではありません );
テーブル権限を作成します( id int auto_incrementプライマリキー、 名前前varchar(255)はnullではありません );
ロールテーブルでは、「名前」フィールドを使用してロール名を保存し、許可表に「名前」フィールドに許可名を保存します。
実際のアプリケーションでは、最初に役割と権限を作成し、次にユーザーに役割と権限を割り当てる必要があります。
たとえば、次のSQLステートメントを使用して、ロールテーブルと許可表にデータを挿入できます。
役割に挿入(name)values( 'admin'); 挿入ロール(名前前)値( 'user');
アクセスライセンス(名前前)値( 'create'); Permissions(name)values( 'read')に挿入; アクセスライセンス(名前前)値( 'update')に挿入します。 アクセスライセンス(名前前)値( 'Delete')に挿入します。
次に、ロールをユーザーに割り当てる必要があります。ユーザーテーブルを作成してユーザー情報を保存し、役割IDを関連付けることができます。ユーザーテーブルを作成するためのSQLの例は次のとおりです。
テーブルユーザーを作成します( id int auto_incrementプライマリキー、 ユーザー名前varchar(255)nullではなく、 パスワードvarchar(255)nullではありません、 role_id int nullではありません );
次に、次のステートメントを使用してユーザーデータを挿入します。
ユーザー(username、password、chole_id)values( 'admin'、 'admin_password'、1)に挿入します。 ユーザー(username、password、role_id)values( 'user'、 'user_password'、2)に挿入します。
PHPでは、セッションを使用して、ユーザーのログインステータスとロール情報を保存できます。ユーザーがログインした後、セッションに役割IDを保存し、役割IDを審査して許可制御を使用します。
これは、ユーザーのログインステータス、その役割、および許可をチェックするPHPコードの例です。
//セッションを始めるします session_start(); //ユーザーがログインしているかどうかを確認しますif(!isset($ _ session ['user_id'])){ エコー「ログインしない」; 出口; } //ユーザーロールIDを得るします $ chole_id = $ _session ['role_id']; //ユーザーの役割を判断if($ role_id == 1){ エコー「マネージャー、すべての権限を所有っている」; } elseif($ role_id == 2){ エコー「一般的にのユーザー、いくつかのアクセスライセンスを含むむ」; } それ以外 { エコー「不明な役割」; 出口; } //ユーザーライセンスを確認します$ permission = $ _get ['Permission']; if($ role_id == 1 ||($ role_id == 2 && in_array($ permission、['read'、 'update'])){ echo "{$ permission}ライセンスを所有っています"; } それ以外 { echo "no {$ permission}ライセンス"; 出口; }
このコードでは、最初にユーザーがログインしているかどうかを確認し、ユーザーの役割IDに基づいて彼が持っているアクセス許可を決定します。実際のニーズに基づいて、役割と許可の判断ロジックをカスタマイズできます。
ロールベースの認証制御(RBAC)は、許可管理の非常に効果的な方法です。データベースに役割と権限を保存し、PHPコードを組み合わせてユーザーの役割と許可を判断することにより、各ユーザーが独自のアクセス許可内でのみアクセスして操作を実行できるようにすることができます。このアプローチは、開発中のシステムのセキュリティと管理性を高めるのに役立ちます。