추후에 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
'Project > APM웹서버' 카테고리의 다른 글
게시판 만들기 ( DB설정 ) (0) | 2021.11.04 |
---|---|
sha256 해쉬로 로그인 구현하기 (0) | 2021.10.28 |
패스워드 해쉬처리( password_hash ) (0) | 2021.10.26 |
식별 / 인증 분리 방식으로 로그인 구현 (0) | 2021.10.25 |
script 에서 클릭 이벤트로 php의 메서드 실행하기 (0) | 2021.10.23 |