Project/APM웹서버

로그인 인증 비밀번호 해시 ( password_verify )

Albin 2021. 10. 27. 03:39

추후에 sql 인젝션 정보보안 관련해서 공부를 위해,

많이 쓰이는 로그인 방식을 5가지 케이스 별로 구현하고 있는중이다.

 

1. 식별/인증 동시방식

- 한번의 sql문으로 디비에서 아이디를 식별하고, 비밀번호를 DB에서 인증하는 방식

2. 식별/인증 분리방식

- sql문으로 디비에서 아이디로 비밀번호를 가져와 코드내부에서 인증하는 방식

3. 식별/인증 동시방식 ( 해쉬처리 )

- 1번에서 비밀번호가 해쉬처리 된것

4. 식별/인증 분리방식 ( 해쉬처리 )

- 2번에서 비밀번호가 해쉬처리 된것

5. 식별/인증 동시방식 ( 개행 )

- sql문이 한줄로 되어 있지않고 엔터 처리된 코드( 인젝션 공격에서 뒤를 주석처리하는 기법이 불가능한 구현방식 )

 

이전글에서 password_hash api를 통해 회원가입을 구현했고,

해쉬처리된 비밀번호가 있어 3번을 구현하려 했다.

 

그러나.. 해쉬처리는 다 같은 해쉬가아니라 여러 알고리즘이 존재 하며,

password_hash는 시간에 따라 달라지는 알고리즘을 갖고 있다고 한다.

 

따라서.. password_verify() 요놈을 사용해서 php 코드안에서 인증을 거쳐야한다

강제로 4번 분리방식으로..

 

 

 

2. 식별/인증 분리방식
4. 식별/인증 분리방식  ( 해쉬처리 )

이렇게 password_verify를 사용하면 간단하게 작동하였다.

 

이후에 3번 동시방식을 구현 하려면, mysql 자체에 패스워드를 해쉬처리하는

테이블을 생성하고 구현해 봐야할 것 같다.

 

참조

https://lactea.kr/entry/PHP-passwordhash%EC%99%80-passwordverify%EB%A1%9C-%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C-%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0

 

[PHP] password_hash와 password_verify로 패스워드 안전하게 관리하기

DB에 패스워드를 안전하게 저장하기 위해서는 단방향 해시 함수를 사용하게 된다. 이유는 DB가 외부로 유출 되었을 때, 패스워드의 평문을 알아내기 어렵게 하기 위해서 이다. php에서 사용자의

lactea.kr