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

나는 지금 내가 로그 인하는 사용자가 필요, 사용자의 비밀번호를 암호화하는 사용자 정의 소금 및 사용자 정의 해시를 사용하지만하고 있습니다.SHA512 및 사용자 정의 소금 - PhalconPHP

코드 PHP 사용 password_hashpassword_verify

$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 사용할 때이 같은 문자열 : 문자열 (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

링크에 [phalcon 보안 해시 (https://olddocs.phalconphp.com/en/3.0.0/ (http://php.net/manual/en/function.password-hash.php) 및 ['password_verify'] (http : /manual/en/function.password-verify.php). 'password_hash'보다 나은 선택 인 경우 /'password_verify'는 알 수 없습니다. – zaph

+0

어쨌든 password_hash와 password_verify를 사용하고 있습니다. 일부 randomizer, csrf 등과 같은 보안을위한 다른 방법으로 그들 주위의 그냥 OOP 래퍼. – Juri

0

loginAction(); 내부 쌍은 안전하고 쉽게 사용할 수 있습니다.

암호 해시 함수를 사용하여 암호 검증기를 저장하는 것만으로는 충분하지 않으며 소금을 추가하면 보안이 향상되지 않습니다. 대신 HMAC를 무작위로 약 100ms 동안 반복하고 해시로 소금을 저장하십시오. 더 나은 아직 PBKDF2, Rfc2898DeriveBytes, password_hash, Bcrypt, passlib.hash 또는 이와 유사한 기능과 같은 기능을 사용하십시오. 요점은 공격자가 무차별 한 암호를 찾기 위해 상당한 시간을 소비하게하는 것입니다. phalcon에서