로그인 인증 비밀번호 해시 ( password_verify )
추후에 sql 인젝션 정보보안 관련해서 공부를 위해,
많이 쓰이는 로그인 방식을 5가지 케이스 별로 구현하고 있는중이다.
1. 식별/인증 동시방식
- 한번의 sql문으로 디비에서 아이디를 식별하고, 비밀번호를 DB에서 인증하는 방식
2. 식별/인증 분리방식
- sql문으로 디비에서 아이디로 비밀번호를 가져와 코드내부에서 인증하는 방식
3. 식별/인증 동시방식 ( 해쉬처리 )
- 1번에서 비밀번호가 해쉬처리 된것
4. 식별/인증 분리방식 ( 해쉬처리 )
- 2번에서 비밀번호가 해쉬처리 된것
5. 식별/인증 동시방식 ( 개행 )
- sql문이 한줄로 되어 있지않고 엔터 처리된 코드( 인젝션 공격에서 뒤를 주석처리하는 기법이 불가능한 구현방식 )
이전글에서 password_hash api를 통해 회원가입을 구현했고,
해쉬처리된 비밀번호가 있어 3번을 구현하려 했다.
그러나.. 해쉬처리는 다 같은 해쉬가아니라 여러 알고리즘이 존재 하며,
password_hash는 시간에 따라 달라지는 알고리즘을 갖고 있다고 한다.
따라서.. password_verify() 요놈을 사용해서 php 코드안에서 인증을 거쳐야한다
강제로 4번 분리방식으로..
이렇게 password_verify를 사용하면 간단하게 작동하였다.
이후에 3번 동시방식을 구현 하려면, mysql 자체에 패스워드를 해쉬처리하는
테이블을 생성하고 구현해 봐야할 것 같다.
참조
[PHP] password_hash와 password_verify로 패스워드 안전하게 관리하기
DB에 패스워드를 안전하게 저장하기 위해서는 단방향 해시 함수를 사용하게 된다. 이유는 DB가 외부로 유출 되었을 때, 패스워드의 평문을 알아내기 어렵게 하기 위해서 이다. php에서 사용자의
lactea.kr