是否有将 API 密钥和秘密保存到数据库中的最佳实践?

Posted

技术标签:

【中文标题】是否有将 API 密钥和秘密保存到数据库中的最佳实践?【英文标题】:Are there best Practices for saving API Keys & Secret into the Database? 【发布时间】:2021-06-29 12:05:52 【问题描述】:

我正在开发一个小型 Laravel 项目,用户可以在其中注册并连接到不同的 API。我知道 API 密钥不应该保存在数据库中,但每个用户都有自己的私有 API 密钥,我无法将其硬编码到 .env 文件中。我考虑将 Key & Secret 保存在不同的表中,并使用 APP_KEY 对其进行加密。

有更好的方法吗?

提前感谢您的任何反馈

【问题讨论】:

你可能想看看 Laravel Passport。 laravel.com/docs/passport 【参考方案1】: 首先您需要创建模型和表格

第 1 步:(创建模型和迁移)

php artisan make:model ApiKey -m

=> 型号名称

ApiKey

=> 列名

id、user_id、api_key、api_secret、created_at、updated_at

第 3 步:(存储数据)

Web.php

Route::post(‘user-details’,’UserController@storeApiDetails’)—>name(‘user-details’);

用户控制器

use App\ApiKey;

public function storeApiDetails(Request $request)
    $request[‘user_id’]      =  Auth::id();
    $request[‘api_key’]      =  bcrypt($request->api_key);
     $request[‘api_secret’]   =  bcrypt($request->api_secret);
    $data = ApiKey::create($request->all());
    
    if($data->save())
        dd(“Success & Redirect To View File”);
    else
        dd(“Failed”);
    

【讨论】:

以上是关于是否有将 API 密钥和秘密保存到数据库中的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

什么是最安全的存储和使用API 密钥和秘密的方法?

服务如何生成和使用公共和秘密 API 密钥?

如何使用 API 密钥和秘密保护 Spring Boot API

在 travis-ci 上使用秘密 api 密钥

API 密钥和秘密密钥如何工作?如果我必须将我的 API 和密钥传递给另一个应用程序,它会安全吗?

是否有将 Braze 与 push_kit HMS 集成的最佳实践 - Flutter