APIを開発する場合、セキュリティは非常に重要です。許可されたユーザーのみが特定のリソースにアクセスできるようにするために、通常、認証と許可制御にトークンメカニズムを使用します。 PHPでは、 Header()関数は通常、HTTPヘッダー情報を送信するために使用され、トークン検証を処理するために使用できます。この記事では、PHPのHeader()関数を使用して、API許可制御のためにTokenと協力する方法を紹介します。
トークンは、認証と承認に使用されるセキュリティ資格です。一般的なトークンタイプには、JWT(JSON Webトークン)とOAuthトークンが含まれます。トークンは通常、ユーザーがクライアント(たとえば、ブラウザのローカルストレージまたはHTTPリクエストヘッダー)によってログインして保存された後、後続のAPIリクエストの認証のために生成されます。
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トークン)を使用すると仮定します。ここに簡略化された検証プロセスがあります。
<?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ライブラリを使用してトークンの検証を処理することをお勧めします。
トークンの検証が失敗した場合、 header()関数を使用して、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のビジネスロジックは引き続き実行されます。
PHPのHeader()関数とトークンを組み合わせて、API許可制御を簡単に実装できます。基本的なワークフローには次のものが含まれます。
リクエストヘッダーからトークンを抽出します。
トークンの妥当性を確認します。
検証結果に基づいてAPIへのアクセスを許可するかどうかを決定します。
このアプローチは、APIを効果的に保護し、認定されたユーザーのみが機密データまたはリソースにアクセスできるようにします。