目的
サービス内だけで復元可能なトークンデータを作成する
どこで使ったか?
Gmailのメール送信者のガイドライン対応のための登録解除処理実装
List-Unsubscribeヘッダーに付与するメール識別データの暗号化
参考:Gmailのメール送信者のガイドライン
使い方
アプリケーション固有のAPP_KEY作成
コマンド実行
php artisan key:generate
.envファイルにAPP_KEYが作成される
APP_KEY=base64:3d1f8e53f6d90948483dbfcaab1eafcc3c0e049e0ea9962f19797d0317c065d3
※漏洩したら暗号データが復元されてしまうため、機密情報として扱う
APP_KEYをconfigに設定する
config/app.php
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'key' => env('APP_KEY'),
データの暗号化
今回はLaravelのヘルパー関数 encrypt() を使います
$mailData = ['user_id'=>12345,'mail_category'=>1];
$mailToken = encrypt($mailData);
// $mailToken Sy6uwWme7HVARRDIh2nS0GyEy3ij2dmolHGL2FjUn1Y6r1ezAFmmokJH-0Rg-RUorqDiWsmf1UTezPFmHcC6-xzyqgzvwJZvTmDxDMRIoH3OynpO25FNfY7b
データの復号化
今回はLaravelのヘルパー関数 decrypt() を使います
$mailData = decrypt($mailToken);
// $mailData ['user_id'=>12345,'mail_category'=>1]
今回の実際の使用例
$request['headers']['List-Unsubscribe'] = "<https://taniyamama.test/unsubscribe?token=" . encrypt(['user_id'=12345,'mail_category'=1]) . ">";
終わり
意外と簡単に使えるLaravelの暗号化・復号化の紹介でした。
こういうものはガンガン活用したいですね〜!
間違いなどありましたらご指摘ください🙏