2017-10-17 6 views
0
public function beforeSave(){ 
    $salt = "Acrec_$"; 
    $hashed = hash('sha512', $salt . $this->password); 
    $this->password = $hashed; 
} 

私は今、私がログインにするユーザー必要がある、ユーザーのパスワードを暗号化するために、カスタム塩とカスタムハッシュを使用して、しかしです。SHA512とカスタム塩 - PhalconPHP

PHPの使用password_hashpassword_verifyloginAction();

$this->auth->check([ 
    'email' => $this->request->getPost('email'), 
    'password' => $this->request->getPost('password'), 
    'remember' => $this->request->getPost('remember') 
]); 
+0

塩は各ユーザーに固有であると考えられています。また、パスワードを保護するために単一のハッシュラウンドを使用すべきではありません。オフライン化するために複数のハッシングを使用するアルゴリズム[bcrypt](https://en.wikipedia.org/wiki/Bcrypt)を使用する必要があります実行不可能なクラッキング。 – Phylogenesis

+0

'$ salt =" Acrec _ $ ";'あなたはそれを一重引用符で囲むべきです。 '$'はPHPの特殊文字です。 –

+0

それは、このような文字列を返すbcryptの私が使用:[phalconセキュリティハッシュ]へ 文字列(60) "$ 2Y $ 08 $ bk5kV3BpZjlGanJDOEpPUO0CEBpTmlVAo8iCc5O4YsEk1c7004L8i" –

答えて

1

だけ使用します。

$password = $this->request->getPost('password'); 
$user->password = $this->security->hash($password); 

そして、それは塩を内蔵していbcryptのを使用していますデフォルトで

$password = $this->request->getPost('password'); 
$user = Users::findFirst(); 
if ($this->security->checkHash($password, $user->password)) { 
    // any logic here 
} 

+0

リンク(https://olddocs.phalconphp.com/en/3.0.0/ (http://php.net/manual/en/function.password-hash.php)および['password_verify'](http://php.net/manual/en/function.password-hash.php)に似ているようです。 /manual/en/function.password-verify.php)。 'password_hash'よりも良い選択肢であれば/' password_verify'は不明です。 – zaph

+0

とにかくpassword_hashとpassword_verifyを使用しています。いくつかのランダマイザー、csrfなどのセキュリティのための他のメソッドを使って、それらの周りのちょうどOOPラッパー – Juri

0

内のコード、ペアは、安全で使いやすいです。

ハッシュ関数を使用するだけでパスワードベリファイアを保存するだけでは不十分で、単にソルトを追加するだけでセキュリティを向上させることはほとんどありません。代わりに、約100msの間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存します。より良いが、PBKDF2,Rfc2898DeriveBytes,password_hash,Bcrypt,passlib.hashまたは類似の機能のような機能を使用する。要点は、攻撃者が無差別にパスワードを見つけるのにかなりの時間を費やすようにすることです。 phalconで