사용자가 데이터베이스에 로그인 할 때마다 암호 값을 변경하는 좋은 방법입니까? 사용자가 시스템에 새 계정을 등록 할 때 암호를 해시하는 해시 함수를 작성했습니다. 사용자가 로그인 할 때마다 데이터베이스의 해시 값이 변경됩니다. 좋든 나쁘니?로그인 할 때마다 데이터베이스의 암호 값을 변경하십시오.
답변
당신이이 해시 함수를 모두 스스로 설계했다면 ... 아주 나쁜 생각입니다. 왜 이렇게 필요한거야? 소금에 절인 SHA-256 해시 암호를 저장하면 보안이 충분합니다. 암호를 다시 생성 할 필요가 없으며 추가 보안을 제공하지 않습니다. 앱이 SQL-Injection을하는 경향이 있다면이 스키마는 앱을 보호하지 못합니다. 당신은 소금과 키 입력 SHA-256,이 같은 것을 사용하는 경우가 훨씬 더 될 것이다 :
$username = 'Admin';
$password = 'gf45_gdf#4hg';
$key = 'MySuperSecretKEY!!!!';
$salt = hash('sha256', uniqid(mt_rand(), true) . 'something random' . strtolower($username));
$hash = $salt . $password . $key;
$hash = hash('sha256', $hash);
$hash = $salt . $hash;
후 확인 (나는 PHP 코더 아니에요, 난 그냥 우리의 애플 리케이션이 안전 할) :
$username = 'Admin';
$password = 'gf45_gdf#4hg';
$sql = '
SELECT
`hash`
FROM `users`
WHERE
`username` = "' . mysql_real_escape_string($username) . '"
LIMIT 1
;';
$r = mysql_fetch_assoc(mysql_query($sql));
$salt = substr($r['hash'], 0, 64);
$hash = $salt . $password . $key;
$hash = hash('sha256', $hash);
$hash = $salt . $hash;
if ($hash == $r['hash']) {
//OK
}
공격자가 자신이 모르는 염장 알고리즘을 속일 수있을 것입니다 그래서 경우에도 핵심 그는 SQL 주입 공격에 유효한 해시를 재현 할 수 없기 때문.
미안하지만, 샘플 해싱을 한 다음 조금 수정했습니다. 이 소스는 http://alias.io/2010/01/store-passwords-safely-with-php-and-mysql/입니다. 저는 PHP가 매우 새로워서 정말 많은 것을 배우고 싶습니다. 모든 종류의 도움을 주시면 감사하겠습니다. 덕분에 : D – harmandogilang
각 사용자마다 다른 소금을 사용하는 것이 좋습니다. 생성 된 해시는 실제로 한 계정 만 확인하는 데만 사용할 수 있기 때문에 암호 데이터베이스를 크랙하는 데 걸리는 시간이 길어집니다. – Wizzard
@Wizzard 예, 알고 있습니다. 그러나 사용자가 로그인 할 때마다 해시 값을 변경하는 것이 좋습니다. 사용자가 로그인하면 해시 함수를 호출하여 비밀번호를 다시 해시하고 데이터베이스에 로그인 할 때마다 변경되지만 원시 비밀번호는 동일합니다 – harmandogilang
- 1. Django에서 요청할 때마다 쿠키 헤더 값을 변경하십시오.
- 2. postgresql과 python을 사용하여 데이터베이스의 시간 값을 변경하십시오.
- 3. PHP를 통해 MySQL 데이터베이스의 값을 변경하십시오.
- 4. 로그인 할 때마다 로그인 페이지에 uialertview가 있습니다.
- 5. sqlite 데이터베이스의 로그인 및 암호 암호화 - C#의 SHA 256
- 6. 사용자가 로그인 할 때마다 배치 파일을 실행하려면
- 7. 로그인 할 때마다 새로운 목록을 만들고 싶습니다.
- 8. 지저귀다 oauth는 로그인 할 때마다 사용자를 인증해야합니다.
- 9. 로그인 암호 웹 서비스 Java
- 10. 처음 로그인 할 때 비밀번호를 변경하십시오.
- 11. Asp.net 로그인 컨트롤 - 암호 텍스트
- 12. MySQL 암호 로그인 코드?
- 13. 데이터베이스의 로그인 코드
- 14. 런타임시 int 값을 변경하십시오.
- 15. 데이터베이스의 {일반} 비밀번호 및 로그인 오류
- 16. 때마다 다른 값을 반환합니다.
- 17. 응용 프로그램을 열 때마다 암호 인증
- 18. 알림을 클릭 할 때 int 값을 변경하십시오.
- 19. 데이터베이스의 사용자 이름과 암호 확인 (스크립트 포함)
- 20. .htaccess 암호 및 강제 로그인
- 21. ASP.NET 로그인 전자 메일/암호
- 22. Rails에서 데이터베이스의 값을 액세스 할 수 없습니다.
- 23. 요소 값을 변경하십시오. nsmutablearray
- 24. jqGrid 행 값을 변경하십시오.
- 25. 데이터베이스 값을 변수로 변경하십시오.
- 26. th 태그 값을 변경하십시오
- 27. sqlbuddy의 기본 로그인 정보를 변경하십시오.
- 28. XML 값을 html로 변경하십시오.
- 29. 암호가없는 사용자 계정이지만 사용자가 로그인 할 때마다 로그인 링크를 전자 메일로 보냅니 까?
- 30. sql ce 데이터베이스의 사용자 별 암호
방법에 따라 다릅니다. 몇 가지 코드를 볼 수 있습니까? –
해결하려는 문제는 무엇입니까? –
특정 시나리오를 제시 할 수 없다면 보안상의 이점없이 복잡성이 추가되는 것처럼 들립니다. – Kitsune