>백엔드 개발 >PHP 튜토리얼 >빠른 팁 : PHP에서 암호를 해시하는 방법

빠른 팁 : PHP에서 암호를 해시하는 방법

Lisa Kudrow
Lisa Kudrow원래의
2025-02-08 12:03:10710검색

Quick Tip: How to Hash a Password in PHP PHP 비밀번호 해싱에 대한 자세한 설명 및 모범 사례 모든 프로그래밍 언어에서는 암호를 해시하는 방법을 이해하는 것이 중요합니다. 이 기사는 PHP에서 암호 해싱을 구현하는 방법을 신속하게 설명하고 그 중요성을 설명합니다.

모든 PHP 프로그래머는 사용자 로그인에 의존하는 응용 프로그램을 작성하여 어떤 단계에서 제대로 실행됩니다. 사용자 이름과 암호는 일반적으로 데이터베이스에 저장된 다음 인증에 사용됩니다. 우리 모두가 알고 있듯이, 비밀번호는 데이터베이스에 일반 텍스트로 저장해서는 안됩니다. 데이터베이스가 손상되면 모든 암호는 악의적 인 공격자에 의해 악용됩니다. 그렇기 때문에 비밀번호를 해시하는 방법을 배워야합니다.

우리는 "암호화"대신 "hash"라는 단어를 사용하고 있습니다. 해싱과 암호화는 종종 혼란스러워하는 두 가지 완전히 다른 프로세스이기 때문입니다.

HASH

HASH 함수는 문자열 (예 : MyPassword123)을 가져 와서 해시 값이라고하는 암호화 된 문자열 버전으로 변환합니다. 예를 들어, MyPassword123의 해시는 9C87BAA223F464954940F859BCF2E233과 같은 겉보기에 임의의 숫자 및 문자 문자열 일 수 있습니다. 해시는 편도 기능입니다. 일단 무언가가 있으면, 반전하기 어려운 프로세스 인 고정 길이 문자열이 나타납니다.

우리는 두 개의 해시 값을 비교하여 둘 다 동일한 원래 문자열에서 나온지 확인할 수 있습니다. 이 기사의 뒷부분에서 PHP를 사용 하여이 프로세스를 구현하는 방법을 볼 수 있습니다.

암호화 해시와 유사하게 암호화는 입력 문자열을 가져 와서 겉보기에 임의의 숫자와 알파벳 문자열로 변환합니다. 그러나 암호화는 암호화 키를 알고 있다면 가역적 프로세스입니다. 가역적 프로세스이므로 비밀번호에는 적합하지 않지만 포인트 간 안전 메시징과 같은 측면에 이상적입니다.

해싱 대신 암호를 암호화하고 사용중인 데이터베이스가 악성 제 3자가 액세스하면 모든 사용자 계정이 위협받습니다. 이것은 분명히 좋은 시나리오가 아닙니다.

소금을 추가하십시오 해시 전에 암호도 "소금에 절인"해야합니다. "Salt"는 해싱 전에 암호에 임의의 문자열을 추가하는 작업입니다.

암호에 소금을 추가하면 사전 공격을 방지 할 수 있습니다 (공격자는 사전에 각 단어를 비밀번호로 체계적으로 입력 할 수 있음) 및 Rainbow Table 공격 (공격자는 공통 비밀번호 해시 목록을 사용합니다).

소금을 첨가하는 것 외에도 해싱시 비교적 안전한 알고리즘을 사용해야합니다. 이것은 아직 금이되지 않은 알고리즘이어야하며, 일반적인 알고리즘이 아닌 특수 알고리즘이어야한다는 것을 의미합니다 (예 : SHA512).

2023 년 현재 권장 해시 알고리즘은 다음과 같습니다

argon2 scrypt bcrypt

pbkdf2

php 해시 처리 PHP 5.5에 기능이 도입 된 이후 PHP에서의 해시 처리는 매우 쉬워졌습니다.

현재는 BCrypt를 기본적으로 사용하고 Argon2와 같은 다른 해싱 알고리즘을 지원합니다. 함수는 또한 비밀번호에 소금을 자동으로 추가합니다.

끝, 해시 암호를 반환합니다. "비용"과 "소금"은 해시의 일부로 반환됩니다. password_hash() 간단히 말해서, 암호 해시의 비용은 해시를 생성하는 데 필요한 계산량을 나타냅니다. 해시를 만드는 "난이도"를 측정하는 것과 같습니다. 비용이 높을수록 어려움이 커집니다.

케이크를 만들고 싶다고 상상해보십시오. 그 케이크의 레시피는 "5 분 동안 계란을 때리십시오."라고 말합니다. 그것이 그 케이크를 만드는 "비용"입니다. 케이크를보다 "안전"으로 만들고 싶다면 레시피를 변경하여 "10 분 동안 계란을 때리십시오". 케이크를 만드는 데 지금 케이크를 만드는 데 시간이 더 걸립니다. 이는 케이크를 만드는 것의 "비용"을 추가하는 것과 같습니다.

우리가

문서에서 읽은대로

함수는 소금이나 알고리즘 정보를 별도로 저장하지 않고 해시를 확인할 수 있습니다.

이렇게하면 해시 값을 확인하기 위해 데이터베이스에 다른 정보를 저장할 필요가 없습니다.

사실, 그것은 다음과 같이 보입니다 : password_hash() 기능에 대한 자세한 내용은 여기를 방문하고

기능에 대한 정보를 보려면 여기를 방문하십시오.

결론 PHP 프로그래머의 경우 해싱과 암호화의 차이점을 이해하고 해싱을 사용하여 암호를 저장하여 사용자 계정을 공격으로부터 보호하는 것이 중요합니다. PHP 5.5에 도입 된 password_verify() 기능을 통해 프로그래머는 Argon2 및 Bcrypt를 포함한 다양한 알고리즘을 사용하여 암호를 단단히 갖도록 할 수 있습니다.

Tom Butler가 PHP & MySQL에서 말했듯이 : Ninja에서 초보자 :
운 좋게도 PHP에는 매우 안전한 비밀번호 해싱 방법이 포함되어 있습니다. 그것은 당신과 나보다 이러한 측면을 더 잘 아는 사람들에 의해 만들어졌으며, 발생할 수있는 보안 문제를 완전히 이해해야하는 우리와 같은 개발자를 피합니다. 따라서 직접 작성하는 대신 내장 PHP 알고리즘을 사용하여 암호를 해싱하는 것이 좋습니다.

이를 염두에두고 최신 권장 해시 알고리즘을 최신 상태로 유지하여 응용 프로그램의 최상의 보안을 보장하십시오.

PHP 비밀번호 해싱

에서 자주 묻는 질문 암호 해싱이란 무엇이며 PHP에서 중요한 이유는 무엇입니까? 비밀번호 해싱은 일반 텍스트 비밀번호를 고정 길이의 돌이킬 수없는 문자열로 변환하는 프로세스입니다. PHP에서는 해시 형식으로 저장하여 사용자 암호를 보호 할 수 있으므로 공격자가 원래 비밀번호를 검색하기가 어렵 기 때문에 중요합니다.
<code class="language-php"><?php
$password = "sitepoint";

$hashed_password = password_hash($password, PASSWORD_DEFAULT);

if (password_verify($password, $hashed_password)) {
    //如果输入的密码与哈希密码匹配,则登录成功
} else {
    //重定向到主页
}</code>
PHP의 암호를 해시하는 데 어떤 해시 알고리즘을 사용해야합니까? PHP는 기능을 제공하며 BCrypt 알고리즘은 기본적으로 사용됩니다. Bcrypt는 보안 암호 해싱 옵션이므로 권장됩니다. password_hash() PHP에서 암호를 해시하는 방법은 무엇입니까? 함수를 사용하여 암호를 해시 할 수 있습니다. 예를 들면 :

. password_hash() PHP에서 해시 비밀번호를 확인하는 방법은 무엇입니까? 해시 비밀번호를 확인하려면 함수를 사용하십시오. 주어진 암호가 데이터베이스에 저장된 해시 버전과 일치하는지 확인합니다. password_hash($password, PASSWORD_BCRYPT) PHP에서 해싱시 암호에 소금을 추가해야합니까? 예, 해싱 전에 각 비밀번호에 고유 한 소금을 사용하는 것이 좋습니다. 기능은 자동으로 소금을 생성하므로 수동으로 관리 할 필요가 없습니다.

위 내용은 빠른 팁 : PHP에서 암호를 해시하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.