Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ec2
- Git
- vue
- cron
- staging area
- Ruby On Rails
- dockerfile
- javascript
- controller
- Python
- docker
- AWS
- imagemagick
- linux
- codeigniter4
- ruby
- react
- SQL
- MySQL
- Wordpress
- laravel
- working directory
- php
- Selenium
- ubuntu
- pagination
- props
- docker-compose
- NGINX
- centOS7
Archives
- Today
- Total
내가 한 노력들
[ codeigniter 4 ] 랜덤 hash 생성하여 DB에 저장하기 본문
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 |