前提・実現したいこと
いつもお世話になっております。
cakephp3で、DBに保存する時はセッターを使い、暗号化。
取得する時はゲッターを使い複合化するプログラムを実現したいです。
発生している問題・エラーメッセージ
DBに保存する時、セッターの処理を通るのですが、その後ゲッターの処理も通過してしまいます。
セッター(暗号化) → ゲッター(複合化)の処理順になっているため、平文でDBに保存されてしまいます。
それと、確認したいのですがセッターはDBに保存する時のみ通る処理で、ゲッターはDBから取得する時のみ通る処理だと思っているのですが認識はあっているでしょうか?
該当のソースコード
UserController.php
php
1$user = $this->request->data; 2$UsersAdminTable = TableRegistry::get('UsersAdmin'); 3$userAdmin = $UsersAdminTable->newEntity(); 4$userAdmin->login_id = $user['login_id']; 5$userAdmin->password = $user['password']; 6$userAdmin->lastName = $user['lastName']; 7$userAdmin->fastName = $user['fastName']; 8$userAdmin->address = $user['address']; 9$UsersAdminTable->save($userAdmin); 10
Entity/UsersAdmin.php
php
1<?php 2 namespace App\Model\Entity; 3 4 use Cake\Auth\DefaultPasswordHasher; 5 use Cake\ORM\Entity; 6 use Cake\Core\Configure; 7 use Cake\Core\Configure\Engine\PhpConfig; 8 use Cake\Utility\Security; 9 10 class UsersAdmin extends Entity 11 { 12 protected $_accessible = [ 13 '*' => true, 14 'id' => false 15 ]; 16 17 protected function _setPassword($password) 18 { 19 if(strlen($password) > 0) 20 { 21 // パスワードをハッシュ化 22 return (new DefaultPasswordHasher)->hash($password); 23 } 24 } 25 26 protected function _setAddress($address) 27 { 28 if(strlen($address) > 0) 29 { 30 return $this->encryption($address); 31 } 32 } 33 34 protected function _getAddress($address) 35 { 36 if(strlen($address) > 0) 37 { 38 return $this->decrypt($address); 39 } 40 } 41 42 protected function _setFastName($fastname) 43 { 44 if(strlen($fastname) > 0) 45 { 46 return $this->encryption($fastname); 47 } 48 } 49 50 protected function _getFastName($fastname) 51 { 52 if(strlen($fastname) > 0) 53 { 54 return $this->decrypt($fastname); 55 } 56 } 57 58 protected function _setLastName($lastname) 59 { 60 if(strlen($lastname) > 0) 61 { 62 return $this->encryption($lastname); 63 } 64 } 65 66 protected function _getLastName($lastname) 67 { 68 if(strlen($lastname) > 0) 69 { 70 return $this->decrypt($lastname); 71 } 72 } 73 74 protected function _setFastKanaName($fastname) 75 { 76 if(strlen($fastname) > 0) 77 { 78 return $this->encryption($fastname); 79 } 80 } 81 82 protected function _getFastKanaName($fastname) 83 { 84 if(strlen($fastname) > 0) 85 { 86 return $this->decrypt($fastname); 87 } 88 } 89 90 protected function _setLastKanaName($fastname) 91 { 92 if(strlen($fastname) > 0) 93 { 94 return $this->encryption($fastname); 95 } 96 } 97 98 protected function _getLastKanaName($fastname) 99 { 100 if(strlen($fastname) > 0) 101 { 102 return $this->decrypt($fastname); 103 } 104 } 105 106 // 暗号化 107 public function encryption($enc_name=null) 108 { 109 $key = Configure::read('key','encryption'); 110 $salt = Configure::read('salt','encryption'); 111 return bin2hex(openssl_encrypt($enc_name,'aes-256-ecb',$key)); 112 } 113 114 // 複合化 115 public function decrypt($decname=null) 116 { 117 $key = Configure::read('key','encryption'); 118 $salt = Configure::read('salt','encryption'); 119 // 複合可能か16進数チェック 120 if (ctype_xdigit($decname) && strlen($decname) % 2 == 0) { 121 $decname = hex2bin($decname); 122 return openssl_decrypt($decname,'aes-256-ecb',$key); 123 } 124 else{ 125 return ''; 126 } 127 128 return $decname; 129 } 130 131} 132 133?> 134 135
補足情報(FW/ツールのバージョンなど)
cakephp3.7
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/21 05:51