Email 검증 기능을 구현할 때, 랜덤 hash를 생성하여 DB에 저장한 뒤, hash의 token값을 email 내용의 링크에 포함을 시킵니다.
그 후에, 링클르 클릭하면 token값을 hash로 변환하여 DB에 저장된 hash값과 비교하여 일치하면 검증 성공하는 방법
위와같은 기능을 구현하기 위해 랜덤의 hash값을 생성하는 방법을 알아보겠습니다.
random_bytes()
random_bytes(int $length): string
파라미터에 넣는 길이 만큼의 랜덤 바이트를 생서합니다.
dd(random_bytes(16));
//random_bytes(...) binary string (16)
하지만, 브라우저에서는 바이트값이 표시가되지 않습니다.
bin2hex()
bin2hex(string $string): string
함수이름 그대로, 바이너리를 16진수의 데이터로 변환시켜 줍니다.
dd(bin2hex(random_bytes(16)));
//bin2hex(...) string (32) "9c903a226bfdfcf6eeaebae84829552f"
hash_hmac()
hash_hmac(
string $algo,
string $data,
string $key,
bool $binary = false
): string
이젠, 위의 만든 랜덤 토큰을 hash로 변환하는 과정입니다.
$token = bin2hex(random_bytes(16));
dd(hash_hmac('sha256', $token, '8sjtf5nYiZqqcm4ghoZkeyAkVdCJBVWn'));
//hash_hmac(...) string (64) "a7755a721ea50548039118b382f82053e8e83a2d0088f804657c3d98a4ce824c"
첫 번째 파라미터로는 해싱 알고리즘을 선택합니다. (md5, sha256 등)
두 번째는 해시할 데이터
세 번째는 암호화를 생성하는 사용될 공유 비밀키입니다.
위의 사이트에서 랜덤 공유 비밀키를 하나 복사해서 사용할 수 있습니다.
'IT 공부 > CodeIgniter' 카테고리의 다른 글
Codeigniter에서 TinyEditor사용하여 PDF 파일 저장하기 (0) | 2022.06.07 |
---|---|
[ codeigniter 4 ] CSRF 공격 방지 (0) | 2022.03.12 |
[ codeigniter 4 ] 사용자 정의 Helper와 Library (0) | 2022.03.11 |
[ codeigniter 4 ] 404 Exception handling (0) | 2022.03.10 |
[ codeigniter 4 ] Model의 return 타팁을 Entity로 변경하기 (0) | 2022.03.09 |