Laravelで自動的に暗号化してDB保存、復号化して取得する方法
以前、 Larave lで トレイト を使ってuser_idの 自動 登録や常に検索条件に含ませる方法を紹介しました。 今回はそれの応用で、 DB 登録時に常に 暗号化 して、表示する際は必ず 復号化 する方法をご紹介します。 特に 個人情報 や パスワード などの重要な データ を取り扱う場合には非常に有効で、 セキュリティ の向上にも繋がりますので、覚えていて損はないかと思います。 自動で暗号化&復号化 今回の目的は、対象の フィールド を指定するだけで、制作者が特に意識せずに 自動 で 暗号化 ・ 復号化 できるようにしたいと思います。 使用するのは、新規で作成する トレイト と既存の モデル のみです。 トレイトを作成する DB 登録前に モデル をセットする際に 暗号化 し、取得する際に復号化するため、 getAttribute と setAttribute を上書きします。 app¥Encryptable.php <?php namespace App; use Crypt; trait Encryptable { public function getAttribute($key) { $value = parent::getAttribute($key); if (in_array($key, $this->encryptable)) { $value = Crypt::decrypt($value); return $value; } return $value; } public function setAttribute($key, $value) { if (in_array($key, $this->encryptable)) { $value = Crypt::encrypt($value); } return parent::setAttribute($key, $value); } } モデル内でフィールドを指定 使い方はとっても簡単です。 使用する...