Drupal의 기본 비밀번호 암호화 방법은 무엇입니까?
Drupal 6/7이 패스워드를 저장하기 위해 기본적으로 사용하는 보안이 무엇인지 알아보려고 합니다.MD5, AES, SHA인가요?나는 아무것도 찾을 수 없었다.
Drupal 8과 Drupal 7은 기본적으로 SHA512를 소금과 함께 사용합니다.패스워드의 최종 해시(스트레칭이라고 불리는 보안 기술)를 생성하기 위한 계산 비용을 증가시키기 위해 PHP의 해시 함수를 통해 해시를 여러 번 실행합니다.
Drupal 8에서는 구현이 객체 지향적입니다.해시 메서드를 정의하는 Password Interface가 있습니다.이 인터페이스의 기본 실장은 PhpassHashedPassword 클래스에 있습니다.이 클래스의 해시 메서드는 SHA512를 통과하는 암호화 메서드를 해시 알고리즘, 암호 및 생성된 솔트로 호출합니다.클래스의 crypt 메서드는 Drupal 7의 _password_crypt() 메서드와 거의 동일합니다.
Drupal 7에서는 구현은 user_hash_password()와 _password_crypt()의 두 가지 글로벌 함수로 분할됩니다.
Drupal 6은 소금 없이 MD5를 사용합니다.관련된 함수는 user_save()입니다.
다음은 Drupal 7의 해시 예시입니다.
"pass" : "$S$Dxl65"W9p07LfQU7jvy5CnsyDpMoLujiAgzy123khcg1OJi/P9PKS"
문자 0 ~ 2는 유형입니다($S$는 Drupal 7).
- 문자 3은 이 목록의 문자 위치를 기준으로 한 log2 라운드의 수(X)입니다. ' . 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefijklmnopqrstuvxyz 예에서는 15로 매핑됩니다.
- 문자 4-11은 SALT입니다.
- 나머지는 2^X 라운드를 사용하는 SHA512 해시입니다.
그런 다음 base64를 사용하여 이진 결과를 문자열로 변환합니다.
$count = 1 <$count_log2;
$password = 해시 알고리즘, $password. $password, TRUE);
{ $syslog = hashsyslogalgo, $syslog. $password, TRUE}를 실행합니다.
} 동안 (--$count);
전체 프로세스는 mydrupalsite\includes\password.inc에서 확인할 수 있습니다.
www\includes\password.inc에서 확인할 수 있습니다.
function user_check_password($password, $account) {
if (substr($account->pass, 0, 2) == 'U$') {
// This may be an updated password from user_update_7000(). Such hashes
// have 'U' added as the first character and need an extra md5().
$stored_hash = substr($account->pass, 1);
$password = md5($password);
}
else {
$stored_hash = $account->pass;
}
$type = substr($stored_hash, 0, 3);
switch ($type) {
case '$S$':
// A normal Drupal 7 password using sha512.
$hash = _password_crypt('sha512', $password, $stored_hash);
break;
case '$H$':
// phpBB3 uses "$H$" for the same thing as "$P$".
case '$P$':
// A phpass password generated using md5. This is an
// imported password or from an earlier Drupal version.
$hash = _password_crypt('md5', $password, $stored_hash);
break;
default:
return FALSE;
}
return ($hash && $stored_hash == $hash);
}
"// Sha512를 사용한 일반 Drupal 7 비밀번호"라고 명확하게 쓰여 있습니다.
Drupal 6 core의 경우 MD5를 사용하고 있으며, 염분은 사용하지 않는 것으로 알고 있습니다.드루팔 7에서는 좀 더 고도의 해시가 사용됩니다.이에 관한 좋은 기사는 이쪽 - 。
drupal 8은 Phpass(변경판)를 사용하고 있습니다.
드루팔 7은 SHA-512 + 소금을 사용합니다.
drupal 6과 이전 버전은 소금 없이 md5를 사용하고 있었다.
다음은 drupal.org에서 찾은 링크입니다.
https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Password%21PhpassHashedPassword.php/function/PhpassHashedPassword%3A%3Acrypt/8.2.x https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Password%21PhpassHashedPassword.php/function/PhpassHashedPassword%3A%3Ahash/8.2.x
언급URL : https://stackoverflow.com/questions/5031662/what-is-drupals-default-password-encryption-method
'programing' 카테고리의 다른 글
파일 크기(바이트)를 사람이 읽을 수 있는 문자열로 변환 (0) | 2022.09.14 |
---|---|
python's eval() vs. ast.literal_eval() 사용 (0) | 2022.09.14 |
max()를 사용하여 그룹을 사용하여 SQL을 다른 테이블로 이행합니다. (0) | 2022.09.14 |
JSFiddle과 JS가 같은 PHP Sandbox가 있나요? (0) | 2022.09.14 |
Vue의 data()와 같은 반응형 변수를 만드는 방법Vue+타입 스크립트 (0) | 2022.09.14 |