前提・実現したいこと
Laravelでの暗号化したデータの検索方法。
*現状生データで名前、メールドレスなどを保持している。
該当ソース
パターン1 laravelで処理
登録時
php
1 $name = Crypt::encrypt($name);
検索時
$names = User::select('name')->get(); foreach ($names as $name) { $Crypt = Crypt::decrypt($name->getOriginal('name')); if ($Crypt == $request->name) { return true; } } return false;
パターン2 SQLで処理
登録時
php
1 2User::create([ 3 'name' => \DB::raw("HEX(AES_ENCRYPT('{$data['name']}', '{$app_key}'))"), 4]);
検索時
$user = User::whereRaw("CONVERT(AES_DECRYPT(UNHEX(`name`), '{$app_key}') USING utf8) LIKE '%太郎%'")->get();
問題点
・Laravel側でむりくり検索行く場合はどうしても負荷がかかり大量のクエリが発生した時にはパフォーマンスがよくない点。 ・SQL側でやった場合、クロスサイトスクリプティングなどの不安がありそうな気がしています。
その他
・どちらの方が良いかメリットデメリットをお聞きしたいです。 ・この方法以外に何か方法があれば教えていただきたい。
回答1件
あなたの回答
tips
プレビュー