gpt4 book ai didi

php - 如何在 rest api 中验证/检查基本身份验证 header

转载 作者:可可西里 更新时间:2023-10-31 23:05:06 24 4
gpt4 key购买 nike

我正在构建一个非常小的 api。在 api 中,我使用来自请求的基本身份验证 header 对请求进行身份验证。这是我完成的代码

$headers = apache_request_headers() ;
// print_r($headers);
if(isset($headers['Authorization'])){
//$credentials = base64_decode($headers);
print_r($headers['Authorization']);
}

我得到的授权 header 为“Basic YXBpa2V5OmFqZWVzaA==” 现在我将如何检查这个基本授权 header 是否有效?我应该解码 username:password 格式的 base64 字符串并与 DB 进行检查,还是当生成用户名和 pass 时,我是否必须将其存储为 base64 格式并将请求的 base64 字符串与 DB 中的字符串进行比较?

我想知道验证基本身份验证请求的标准做法是什么?

请提出一些想法。我刚刚开始,请原谅我的愚蠢问题。

最佳答案

我建议您使用 api token 而不是用户/密码组合。使用简单的身份验证 token ,您可以获得两个好处。

  1. 用户名或密码可能会随时间发生变化,如果发生这种情况,用户将被迫更改其应用程序中的所有用户名和密码,以使应用程序恢复正常工作。一个简单的 token 是不变的,当用户的用户名和密码更改时不需要任何更改。

  2. 使用基本身份验证,客户端需要以未加密的格式向那里发送用户名和密码。这不是很安全,在最坏的情况下,未经授权的人可以使用请求中的用户名 + 密码登录到服务后端。简单 token 仅对 api 调用有效。


为每个 API 用户生成一个简单的随机 token ,例如 Eq57dwypZaFW4f2xxRzFaGjwCYinOn6l13Mvds00P2ZzgdMPTk,并要求在每个 API 请求中发送此 token ,请求 header 如下

X-API-TOKEN: Eq57dwypZaFW4f2xxRzFaGjwCYinOn6l13Mvds00P2ZzgdMPTk
X-API-CLIENT-ID: 123456

在服务器端验证

<?php

$token = $_SERVER['X-API-TOKEN'];
$userID = $_SERVER['X-API-CLIENT-ID'];
$isValid = $findInDatabase->findToken($userID, $token);

if( $isValid )
{
// process api request
} else {
// invalid token
}

关于php - 如何在 rest api 中验证/检查基本身份验证 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com