문제

나는 CodeIgniter를 사용하고 사용자 등록을하려고 노력하고 있습니다.그리고 나는 이상한 일을 만났습니다.처음에는 암호 가치로 정확히 무엇을하고 있는지 알려줄 것입니다.

$password = stripslashes($password);
$password = htmlspecialchars($password);
$password = md5($password);
$password = strrev($password);
.

다음 DB :

에 저장하고 있습니다.
$data = array(
    'email'     => $email,
    'reg_type'  => $reg_type,
    'password'  => $password
);

$this->CI->db->insert('user', $data);
.

및 어떤 암호가 입력 되든, 항상이 값을 저장합니다. e7248fce8990089e402b00f89dc8d14d

및 로그인 페이지 (암호화 코드가 동일)가 될 때, 다른 MD5 값을 반환합니다 (그리고 올바른 모양).

누군가가 왜 일어나는지와 그것을 해결하는 방법을 설명 할 수 있습니까?또는 다른 암호의 암호화 방법을 제안 할 수 있습니다.

고맙습니다.

도움이 되었습니까?

해결책

빈 변수 :

E7248FCE8990089E402B00F89DC8D14D 은 빈 문자열의 역 해시입니다.

$ Password 변수가 비어 있으면 $_POST 코드가있는 버그가있을 수 있습니다.

복어 사용 :

의견에서 언급했듯이, md5()를 더 이상 사용해서는 안됩니다.

PHP 5.5+가있는 경우 password_hash() 함수를 사용할 수 있습니다.

$password = password_hash($password, PASSWORD_BCRYPT);

post()stripslashes() 대신 CodeIgniter htmlspecialchars() 기능을 사용하십시오.

예 :

//Get password from form
$password = $this->input->post('field_name', true); //adding true runs the XSS filter.

//Hash Password
$password = password_hash($password, PASSWORD_BCRYPT);

//Data Array
$data = array(
    'email'     => $email,
    'reg_type'  => $reg_type,
    'password'  => $password
);

//Save to DB
$this->CI->db->insert('user', $data);
.

편집 :

password_hash()는 소유자의 Salting을 처리합니다.코드에서 추가 소금을 제거했습니다.(@martinstoeckli 댓글보기)

를 참조하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top