问题描述
我正在使用Lumen开发REST API。 (第8版)。而且我需要为我的REST API实现基于API密钥的身份验证。例如,我将生成一个API密钥,并将其提供给需要使用我的API的第三方。要生成此密钥,我正在使用JWT。然后将密钥保存在数据库中。
<?php
namespace App\Http\Middleware;
use App\ApiKey;
use Closure;
class ApiAuthMiddleware
{
public function handle($request,Closure $next)
{
$tokenValid = ApiKey::where('api_key',$request->header('Authorization'))->exists();
if (!$tokenValid) {
return response()->json('Unauthorized',401);
}
return $next($request);
}
}
这是我自定义设计的代码,用于检查数据库中的API密钥。我有一些主要的基于安全性的问题。
-
其他第三方将在标头中发送此令牌,任何可以读取有效负载的人都可以获取标头,并向我发送具有相同标头的请求。如何预防呢?与客户端密钥有关吗?
-
在每个请求中检查MySQL数据库是否可行?这是数据库不必要的工作量吗?我们可以用一个小的Redis实例代替它吗?这样安全吗?
我们可以这样设置令牌:
Redis::set('token','jwt_token_here');
最后,是否有一个无需使用我的自定义代码即可进行管理的库?我认为它更安全,更有效。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)