PHP에서 비밀번호 해싱
비밀번호를 일반 텍스트로 저장하는 것은 올바르지 않습니다. 해커가 귀하의 데이터베이스에 접근하여 비밀번호를 훔칠 수 있습니다.
따라서 일반적으로 로그인은 일반 텍스트로 저장되지만,
비밀번호는 md5라는 특별한 함수를 통해 해시됩니다.
이 함수는 매개변수로 비밀번호를 받아, 그 비밀번호를 복원할 수 없는
해시를 반환합니다.
예를 들어, 어떤 문자열의 해시를 찾아보겠습니다:
<?php
echo md5('12345'); // outputs '827ccb0eea8a706c4c34a16891f84e7b'
?>
이제 우리의 등록과 인증 프로세스를 수정해야 합니다. 우선, 현재 비밀번호가 일반 텍스트로 저장되어 있는 사용자 테이블을 비워내는 것이 좋습니다. 그 대신 해시된 형태로 저장되어야 합니다. 그런 다음 등록 테스트 시 새로운 형식의 데이터로 테이블이 채워지게 됩니다.
이제 새로운 사용자를 데이터베이스에 저장할 때 비밀번호 대신 그 해시가 추가되도록 등록 프로세스를 수정해 보겠습니다.
설명된 수정사항은 대략 다음과 같을 것입니다:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // 비밀번호를 해시로 변환
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
인증 프로세스에도 유사한 수정사항을 적용합니다:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // 비밀번호를 해시로 변환
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
해싱을 고려하여 등록 프로세스에 변경사항을 적용하고, 몇 명의 새로운 사용자를 등록한 후, 해시된 비밀번호와 함께 데이터베이스에 추가되었는지 확인하세요.
해싱을 고려하여 인증 프로세스에 변경사항을 적용하고, 이전에 등록된 사용자로 로그인을 시도해 보세요.