나는 CodeIgniter를 사용하여 웹 사이트를위한 로그인 라이브러리를 개발 해왔다. 인증 코드는 다음과 같습니다.PHP와 MySQL에서 소금 내기
function signin($username, $password)
{
$CI =& get_instance();
$query_auth=$this->db->query('SELECT user_id, banned FROM user WHERE username=? AND password=SHA1(CONCAT(?,salt)) LIMIT 1', array($username, $password));
if($query_auth->num_rows()!=1)
return 2;
else
{
if($query_init->row()->banned==1)
return 3;
else
{
$CI->load->library('session');
$this->session->set_userdata('gauid', $query_auth->row()->user_id);
return 1;
}
}
}
반환 값은 성공, 실패 또는 금지를 나타냅니다. 각 사용자는 데이터베이스에 저장된 고유 한 소금을 가지고 있습니다.
원래 데이터베이스에서 소금을 가져 와서 사용자가 입력 한 암호와 소금을 PHP의 데이터베이스에서 결합한 다음 조합 된 값으로 데이터베이스에 다시 쿼리했습니다. 데이터베이스에 단 하나의 여행이 필요하고 코드가 적어지기 때문에 속도가 빨라질 것이라고 생각했습니다. 나는 또한 모든
첫째, 당신의 DBMS (MySQL은) 가 암호화를 위해 어떤 지원을 할 필요가 없습니다 ...하지만이 질문 Salting my hashes with PHP and MySQL 가기 reponse를 읽은 후, 동등하게 안전 할 것이라고 생각 해시. PHP 쪽에서 모든 을 수행 할 수 있으며, 수행해야 할 작업은 입니다.
... 나는 보안상의 문제가 있었는지 궁금해하기 시작했다.
실제로이 코드가 잘못 되었습니까?
[PHP 암호 용 보안 해시 및 소금] 가능한 복제본 (http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords) – rook
어떻게 표시되는지 모르겠다. 참된! 질문은 완전히 다릅니다. – j82374823749
다음은 너무 지역화되어있어 닫아야합니다. – rook