PHP 개발에서 사용자 신원의 진위와 액세스 권한의 합리적인 제어를 보장하는 것이 안전한 웹 애플리케이션을 구축하는 데 핵심입니다. 이 기사는 몇 가지 일반적인 인증 및 승인 기술을 소개하고 코드 예제와 함께 더 안전한 응용 프로그램 환경을 달성하는 데 도움이됩니다.
HTTP 기본 인증은 브라우저 팝업 창을 통해 사용자 이름과 비밀번호를 요청합니다. 간단하고 사용하기 쉽지만 전송 중 보안이 낮으며 내부 또는 보안 요구 시나리오에 적합합니다.
// HTTP 기본 인증 헤더를 보내십시오 ( 'www-authenticate : Basic Realm = "Protected Area"'); 헤더 ( 'http/1.0 401 무단 무단'); // 제공된 자격 증명 if (isset ($ _ server [ 'php_auth_user']) && isset ($ _ server [ 'php_auth_pw'])) { $ username = $ _server [ 'php_auth_user']; $ password = $ _server [ 'php_auth_pw']; // 데이터베이스에서 사용자를 찾으십시오 $ stmt = $ mysqli-> 준비 ( "사용자에서 username =? and password =?"); $ stmt-> bind_param ( "ss", $ username, $ password); $ stmt-> execute (); $ result = $ stmt-> get_result (); $ stmt-> close (); if ($ result-> num_rows> 0) { // 확인이 성공하고 액세스가 허용됩니다} else { // 검증이 실패하여 401 무단 응답 에코 "무단 액세스"를 표시합니다. } }
HTML 양식을 통해 사용자 이름과 비밀번호를 제출하는 것은 웹 응용 프로그램에서 가장 일반적으로 사용되는 인증 방법이며 세션 관리를 결합하여 사용자 로그인 상태 유지 관리를 달성합니다.
// 프로세스 로그인 양식 제출 if (isset ($ _ post [ 'username']) && isset ($ _ post [ 'password']) { $ username = $ _post [ 'username']; $ password = $ _post [ 'password']; // 데이터베이스에서 사용자를 찾으십시오 $ stmt = $ mysqli-> 준비 ( "사용자에서 username =? and password =?"); $ stmt-> bind_param ( "ss", $ username, $ password); $ stmt-> execute (); $ result = $ stmt-> get_result (); $ stmt-> close (); if ($ result-> num_rows> 0) { // 확인이 성공적으로, 인증 세션 세션 _start ()을 만듭니다. $ _session [ '인증 된'] = true; // 보호 구역 헤더로 리디렉션 ( "위치 : protected_area.php"); } 또 다른 { // 확인 실패, 오류 메시지 표시 echo "유효하지 않은 사용자 이름 또는 비밀번호"; } }
사용자 역할을 기반으로 한 관리 액세스 권한은 관리자와 일반 사용자 간의 권한 차이와 같은 여러 사용자의 애플리케이션에서 일반적입니다.
// 사용자가 특정 보호 영역에 액세스하는 데 필요한 권한이 있는지 확인합니다. if (isset ($ _ session [ 'user_role']) && $ _session [ 'user_role'] == 'admin') { // 액세스 허용}
사용자가 권한 내에서만 리소스에만 액세스 할 수 있도록 특정 리소스 (예 : 파일, 데이터베이스 레코드)에 대한 액세스를 제어합니다.
// 사용자 ID $ path = '/Uploads/'에 따라 파일 액세스 권한을 확인하십시오. $ _get [ 'file_id']; if (file_exists ($ path) && is_file ($ path)) { $ fileowner = 'user_'. $ _get [ 'user_id']; if (파일 소유자 ($ path) == $ 파일 소유자) { // 파일에 대한 액세스 허용} }
게시판 응용 프로그램에서 위의 인증 및 인증 메커니즘을 결합 할 수 있습니다.
PHP 개발자는 인증 및 승인 프로세스를 합리적으로 설계함으로써 웹 응용 프로그램의 보안을 효과적으로 향상시킬 수 있습니다. 이 기사에서 제공 한 샘플 코드 및 아이디어는 안전한 액세스 제어를 구현하기위한 실질적인 참조를 제공하여보다 안정적이고 안정적인 애플리케이션 시스템을 만드는 데 도움이됩니다.