>  Q&A  >  본문

PHP의 Password_hash 함수를 사용하여 비밀번호를 해시하고 확인하는 방법

<p>최근에 저는 인터넷에서 찾은 로그인 스크립트에 나만의 보안을 구현하려고 노력해 왔습니다. 각 사용자에 대한 솔트를 생성하는 방법에 대한 스크립트를 배우던 중 <code>password_hash</code>를 우연히 발견했습니다. </p> <p>내가 이해한 바에 따르면(이 페이지에서 읽은 내용에 근거하여) <code>password_hash</code>를 사용하면 솔트가 해당 행에 이미 생성됩니다. 이거 진짜야? </p> <p>또 다른 질문이 있습니다. 두 가지 소금을 사용하는 것이 현명한가요? 하나는 파일에 직접 저장되고 다른 하나는 데이터베이스에 저장됩니까? 이렇게 하면 누군가가 데이터베이스의 솔트를 깨뜨려도 파일에는 여전히 솔트가 남아 있습니다. 나는 여기서 소금을 저장하는 것이 결코 현명한 생각이 아니라는 것을 읽었습니다. 그러나 사람들이 이렇게 말할 때마다 나는 항상 당황스럽습니다. </p>
P粉011684326P粉011684326399일 전544

모든 응답(2)나는 대답할 것이다

  • P粉896751037

    P粉8967510372023-08-18 17:37:32

    예, 올바르게 이해하셨습니다. Password_hash() 함수는 자동으로 솔트를 생성하고 생성된 해시 값에 포함시킵니다. 솔트를 데이터베이스에 저장하는 것은 완벽하게 정확하며, 알려진 경우에도 작동합니다.

    으아악

    당신이 언급한 두 번째 솔트(파일에 저장된 솔트)는 실제로 칠리 또는 서버 측 키입니다. 해시 앞에 추가하면(소금처럼) 고추를 추가한 것입니다. 하지만 더 좋은 방법이 있습니다. 먼저 해시 값을 계산한 다음 서버 측 키를 사용하여 해시 값을 암호화하는 것입니다(양방향 암호화). 이렇게 하면 필요한 경우 키를 변경할 수 있습니다.

    솔트와 달리 이 키는 비밀로 유지되어야 합니다. 사람들은 종종 혼란스러워하고 소금을 숨기려고 노력하지만, 소금이 그 일을 하게 하고 열쇠를 사용하여 비밀을 추가하는 것이 더 좋습니다.

    회신하다
    0
  • P粉422227023

    P粉4222270232023-08-18 10:36:51

    password_hash을 사용하여 비밀번호를 저장하는 것이 좋습니다. 데이터베이스와 파일에 별도로 저장하지 마십시오.

    다음과 같은 입력이 있다고 가정합니다:

    으아악

    먼저 다음 방법으로 비밀번호를 해시합니다.

    으아악

    그런 다음 출력을 봅니다.

    으아악

    보시다시피 해싱되었습니다. (이 단계를 완료했다고 가정합니다.)

    이제 이 해시된 비밀번호를 데이터베이스에 저장하세요. 비밀번호 열이 해시 값(최소 60자 이상)을 수용할 만큼 충분히 큰지 확인하세요 . 사용자가 로그인을 요청하면 다음을 통해 데이터베이스의 해시가 입력된 비밀번호와 일치하는지 확인할 수 있습니다.

    으아악

    공식 참조 문서

    회신하다
    0
  • 취소회신하다