보안은 웹 사이트 나 응용 프로그램을 개발할 때 중요한 요소입니다. 사용자에게 적절한 권한을 설정하고 특정 권한이있는 사용자 만 해당 기능 및 리소스에 액세스 할 수 있도록하는 방법은 모든 개발자가 해결 해야하는 문제입니다. 역할 기반 권한 제어 (RBAC)는 일반적인 권한 관리 방법입니다. 이 기사에서는 PHP를 사용하여 역할 기반 인증 제어를 구현하는 방법을 안내합니다.
역할 기반 권한 제어를 구현하기 전에 먼저 "역할"및 "권한"의 개념을 명확히해야합니다.
역할은 시스템에서 사용자의 신원을 나타냅니다. 예를 들어, "관리자", "일반 사용자"등. 각 역할에는 일반적으로 사용자가 수행 할 수있는 내용을 제한하기 위해 다른 권한이 부여됩니다.
권한 은 시스템 정의되어 있으며 역할이 수행 할 수있는 행동 또는 자원에 액세스 할 수있는 조치를 결정합니다. 권한에는 "데이터 읽기", "데이터 수정"또는 "데이터 삭제"등이 포함될 수 있습니다.
역할과 권한의 조합을 통해 사용자는 시스템의 작동 권한을 효과적으로 제어 할 수 있습니다.
역할 기반 권한 제어를 구현하려면 일반적으로 데이터베이스에 역할 및 권한 정보를 저장해야합니다. 우리는 두 개의 테이블을 만들 수 있습니다 : 하나는 역할 정보를 저장하고 다른 스토어는 권한 정보를 저장합니다. 다음은 역할 및 권한 테이블을 생성하는 예제 SQL 문입니다.
테이블 역할 생성 ( id int auto_increment 기본 키, 이름 Varchar (255) NULL이 아닙니다 );
테이블 권한 생성 ( id int auto_increment 기본 키, 이름 Varchar (255) NULL이 아닙니다 );
역할 테이블에서 "이름"필드를 사용하여 역할 이름과 권한 테이블에서 "이름"필드를 사용하여 권한 이름을 저장합니다.
실제 응용 프로그램에서 먼저 역할과 권한을 생성 한 다음 사용자에게 역할 및 권한을 할당해야합니다.
예를 들어 다음 SQL 문을 사용하여 데이터를 역할 테이블 및 권한 테이블에 삽입 할 수 있습니다.
역할에 삽입 (이름) 값 ( 'admin'); 역할에 삽입 (이름) 값 ( '사용자');
권한에 삽입 (이름) 값 ( 'create'); 권한에 삽입 (이름) 값 ( 'read'); 권한에 삽입 (이름) 값 ( '업데이트'); 권한에 삽입 (이름) 값 ( 'delete');
다음으로 사용자에게 역할을 할당해야합니다. 사용자 테이블을 만들고 역할 ID를 연결하여 사용자 정보를 저장할 수 있습니다. 다음은 사용자 테이블 작성을위한 SQL의 예입니다.
테이블 사용자 만들기 ( id int auto_increment 기본 키, Username Varchar (255) NOT NULL, 비밀번호 varchar (255) null, 역할 _id int null이 아닙니다 );
그런 다음 다음 진술을 사용하여 사용자 데이터를 삽입하십시오.
사용자에 삽입 (사용자 이름, 비밀번호, role_id) 값 ( 'admin', 'admin_password', 1); 사용자에 삽입 (사용자 이름, 비밀번호, role_id) 값 ( '사용자', 'user_password', 2);
PHP에서는 세션을 사용하여 사용자의 로그인 상태 및 역할 정보를 저장할 수 있습니다. 사용자가 로그인 한 후 세션에 역할 ID를 저장 한 다음 역할 ID를 판단하여 권한 제어를 사용합니다.
다음은 사용자의 로그인 상태, 역할 및 권한을 확인하는 PHP 코드 예입니다.
// 세션을 시작합니다 session_start (); // 사용자가 로그인한지 확인 if (! isset ($ _ session [ 'user_id'])) { 에코 "로그인되지 않았다"; 출구; } // 사용자 역할 ID를 얻습니다 $ role_id = $ _session [ 'role_id']; // 사용자 역할을 판단하는 경우 ($ role_id == 1) { Echo "관리자, 모든 권한이 있습니다"; } elseif ($ role_id == 2) { Echo "일부 권한이있는 일반 사용자"; } 또 다른 { 에코 "알 수없는 역할"; 출구; } // 사용자 권한을 확인하십시오 $ $ vermission = $ _get [ '허가']; if ($ role_id == 1 || ($ role_id == 2 && in_Array ($ resment, [ 'read', 'update'))) { echo "{$ hassment} 권한이 있습니다"; } 또 다른 { echo "아니요 {$ vermission} 권한"; 출구; }
이 코드에서 먼저 사용자가 로그인한지 확인한 다음 사용자의 역할 ID를 기반으로 한 권한을 결정하십시오. 실제 요구에 따라 역할 및 권한의 판단 논리를 사용자 정의 할 수 있습니다.
역할 기반 인증 제어 (RBAC)는 매우 효과적인 권한 관리 방법입니다. 데이터베이스에 역할 및 권한을 저장하고 PHP 코드를 결합하여 사용자의 역할 및 권한을 판단함으로써 각 사용자가 자체 권한 내에서만 액세스하고 작업을 수행 할 수 있도록 할 수 있습니다. 이 접근법은 개발 중 시스템의 보안 및 관리 능력을 향상시키는 데 도움이됩니다.