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 개발자는 인증 및 승인 프로세스를 합리적으로 설계함으로써 웹 응용 프로그램의 보안을 효과적으로 향상시킬 수 있습니다. 이 기사에서 제공 한 샘플 코드 및 아이디어는 안전한 액세스 제어를 구현하기위한 실질적인 참조를 제공하여보다 안정적이고 안정적인 애플리케이션 시스템을 만드는 데 도움이됩니다.