API를 개발할 때는 보안이 중요합니다. 승인 된 사용자 만 특정 리소스에 액세스 할 수 있도록 일반적으로 인증 및 권한 제어를 위해 토큰 메커니즘을 사용합니다. PHP에서 헤더 () 함수는 일반적으로 HTTP 헤더 정보를 보내는 데 사용되며 토큰 검증을 처리하는 데 사용할 수 있습니다. 이 기사는 PHP의 헤더 () 기능을 사용하여 API 권한 제어를 위해 토큰과 협력하는 방법을 소개합니다.
Token은 인증 및 승인에 사용되는 보안 자격 증명입니다. 일반적인 토큰 유형에는 JWT (JSON Web Token) 및 OAUTH 토큰이 있습니다. 토큰은 일반적으로 사용자가 로그인 한 후 클라이언트 (예 : 브라우저의 로컬 스토리지 또는 HTTP 요청 헤더)가 저장 한 후에 서버에서 생성됩니다.
API 권한 제어에 토큰을 사용하는 기본 프로세스는 다음과 같습니다.
사용자는 API에 요청을 보내고 토큰과 함께 제공됩니다.
서버가 요청을 수신 한 후에는 Header () 함수를 사용하여 요청 헤더에서 토큰을 읽습니다.
서버는 토큰의 정당성을 확인합니다. 확인이 통과되면 관련 리소스에 대한 액세스가 허용됩니다. 확인이 실패하면 허가 거부 응답이 반환됩니다.
PHP에서 HTTP 요청 헤더는 $ _server 또는 getAllHeaders () 함수를 통해 얻을 수 있습니다. 요청 헤더에서 인증 이라는 토큰을 받고 싶다고 가정 해 봅시다. 간단한 예는 다음과 같습니다.
<?php
// 얻다Authorization머리에있는 사람Token
function getAuthToken() {
if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
return $_SERVER['HTTP_AUTHORIZATION'];
}
return null;
}
?>
getAuthtoken () 함수는 권한 부여 헤더가 존재하는지 확인하고 토큰을 반환합니다. 존재하지 않으면 NULL을 반환하십시오.
토큰을 확인할 때는 일반적으로 토큰의 내용 또는 서명에 따라 검증이 필요합니다. 여기서 우리는 토큰 검증에 JWT (JSON Web Token)를 사용한다고 가정합니다. 단순화 된 검증 프로세스는 다음과 같습니다.
<?php
// 분석하고 확인하십시오JWT Token
function validateToken($token) {
$secret_key = "your-secret-key"; // 사전 설정 키,확인을 위해Token
// 간단한 것이 여기에 사용됩니다JWT분석하고 확인하십시오过程,실제로, 기성품 라이브러리와 같은 Firebase JWT
// 다음은 단순화 된 예입니다
try {
// 가정Token형식은입니다 "header.payload.signature"
$parts = explode('.', $token);
if (count($parts) !== 3) {
throw new Exception("Token형식의 오류");
}
// 시뮬레이션 확인Token(실제 응용 프로그램에서는 해독 될 수 있습니다Token서명을 확인하십시오)
$payload = base64_decode($parts[1]);
$payload_data = json_decode($payload, true);
if (!$payload_data || !isset($payload_data['exp']) || $payload_data['exp'] < time()) {
throw new Exception("Token만료되었습니다");
}
// Token효율적인
return true;
} catch (Exception $e) {
// 오류가 발생하면 반환합니다false
return false;
}
}
?>
위의 코드에서는 JWT 토큰을 찢고 페이로드 부품을 확인하여 토큰이 유효한지 여부를 결정합니다. 실제 생산 환경에서는 성숙한 JWT 라이브러리를 사용하여 토큰 검증을 처리하는 것이 좋습니다.
토큰 확인이 실패하면 헤더 () 함수를 사용하여 401 (무단) 또는 403 (액세스 금지)과 같은 해당 HTTP 상태 코드를 반환 할 수 있습니다. 예를 들어:
<?php
// 반품401무단 응답
function sendUnauthorizedResponse() {
header("HTTP/1.1 401 Unauthorized");
header("Content-Type: application/json");
echo json_encode(["error" => "무단 액세스,请提供효율적인的Token"]);
exit();
}
?>
토큰 확인이 실패하면 SendUnauthorizedResponse () 함수를 호출하여 401 무단 응답을 보내고 오류 정보를 제공합니다.
이전 기능을 결합하여 다음은 PHP에서 API 권한 제어를 구현하는 방법을 보여주는 완전한 예입니다.
<?php
// 얻다Token
$token = getAuthToken();
// 제공되지 않은 경우Token,直接반품401무단 응답
if (!$token) {
sendUnauthorizedResponse();
}
// 확인하다Token的효율적인性
if (!validateToken($token)) {
sendUnauthorizedResponse();
}
// 만약에Token효율적인,계속 처리하십시오API묻다
echo json_encode(["message" => "API묻다成功,权限확인하다通过"]);
?>
이 완전한 예에서 먼저 요청에서 토큰을 가져오고 토큰이 비어 있거나 유효하지 않은 경우 401 무단 응답이 반환됩니다. 토큰이 유효하면 API의 비즈니스 논리가 계속 실행됩니다.
Token과 결합 된 PHP의 Header () 함수를 통해 API 권한 제어를 쉽게 구현할 수 있습니다. 기본 워크 플로에는 다음이 포함됩니다.
요청 헤더에서 토큰을 추출하십시오.
토큰의 유효성을 확인하십시오.
확인 결과에 따라 API에 액세스 할 수 있는지 결정하십시오.
이 접근법은 API를 효과적으로 보호하여 공인 사용자 만 민감한 데이터 또는 리소스에 액세스 할 수 있도록합니다.