Appearance
暗号化の判断 ― 平文で保存したらどうなる?
この章のキーワード
| 用語 | 意味 | なぜ重要か |
|---|---|---|
| encrypted cast | Laravel が自動で暗号化/復号する仕組み | コード上は普通に使えるが DB には暗号文が入る |
| $hidden | API レスポンスや toArray() から除外するカラム | フロントエンドへの露出を防ぐ |
| AES-256 | 暗号化に使われるアルゴリズム | APP_KEY なしでは復号不可能 |
| APP_KEY | Laravel アプリケーションの暗号化キー | .env に保存。漏洩厳禁 |
Phase 1: 観察
exemplar 秘密情報の保存方法として、積極的に擁護できる実装です。
Partner API のクレデンシャルモデルを見てみましょう。
php
// PartnerApiCredential.php
// Label: exemplar
class PartnerApiCredential extends Model
{
// API レスポンスから除外するカラム
protected $hidden = [
'secret',
'id',
'partner_integration_id',
];
protected $casts = [
'secret' => 'encrypted', // ← これ
'scopes' => 'json',
'ip_allowlist' => 'json',
'last_used_at' => 'datetime',
'expires_at' => 'datetime',
'revoked_at' => 'datetime',
];
}'secret' => 'encrypted' の 1 行。これが何を守っているのでしょうか。
Phase 2: 判断
AI禁止ゾーン
'secret' => 'encrypted'を 外したら(平文保存にしたら)、何が危険ですか?$hidden配列は何のためにありますか?encryptedとは 何が違い ますか?- この 2 つは どちらか一方だけ で十分ですか?
AIに聞く前に、自分の頭で考えてみましょう。
テキストを入力すると有効になります