我正在为一个小项目连接一个 laravel Web 应用程序。 其中一个功能是访问照片数据库(piwigo)的API。 我对 laravel 很陌生,在网络安全方面的经验为 0,所以我想知道设置它的最佳方式是什么。
我设法通过使用登录方法创建一个PiwigoClient
模型来设置API访问,该模型会将响应coockies传递给piwigo的其他请求:
class PiwigoClient extends Model
{
use HasFactory;
public static $apiURL = 'https://not-actual-piwigo-link/ws.php';
public function login() {
$response = Http::asForm()
->post($this::$apiURL . '?format=json', [
'method' => 'pwg.session.login',
'username' => 'UserName',
'password' => 'PassWord'
]);
return $response;
}
public function test() {
$login = $this->login();
$cookies = $login->cookies();
$response = Http::withOptions(['cookies' => $cookies])
->get($this::$apiURL, [
'format' => 'json',
'method' => 'pwg.tags.getImages',
'tag_name' => 'ImageTag'
]);
return $response->json();
}
}
现在我想知道,将这样的'PassWord'
留在PiwigoClient
模型文件中感觉不安全。"存储"密码的最安全,最方便的方法是什么?
标准做法是将"秘密"密钥存储在.env
中,然后通过配置文件在代码库中引用它们。
https://laravel.com/docs/9.x/helpers#method-config
// PiwigoClass
public function login() {
$response = Http::asForm()
->post(config('piwigo.url') . '?format=json', [
'method' => 'pwg.session.login',
'username' => config('piwigo.username'),
'password' => config('piwigo.password')
]);
return $response;
}
// config file piwigo.php
<?php
return [
'password' => env('PIWIGO_PASSWORD', 'PassWord'),
'username' => env('PIWIGO_USERNAME', 'UserName'),
'url' => env('PIWIGO_URL', 'https://my_api_url...')
]
?>