目的
サービス内だけで復元可能なトークンデータを作成する
どこで使ったか?
Gmailのメール送信者のガイドライン対応のための登録解除処理実装
List-Unsubscribeヘッダーに付与するメール識別データの暗号化
使い方
アプリケーション固有の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の暗号化・復号化の紹介でした。
こういうものはガンガン活用したいですね〜!
間違いなどありましたらご指摘ください🙏