[ 1개월 | 3주차 수업 ] 식별, 인증 & 로그인 로직 & 쿠키, 세션

2025. 4. 23. 00:32·웹 모의해킹 취업반 스터디/수업

⯌ 식별과 인증

⟡ 식별

: 수많은 데이터 중 특정 데이터를 찾아내는 작업.

 

[ 식별정보 ]

• 노출되어도 상관없는 정보.

• 중복되면 안 되는 값.( Primary Key, PK )

• 사용자들을 구분하기 위해 사용되는 값.

• 예시) ID, 전화번호, 이메일, 고객등록번호 등

 

식별정보는 값이 중복되면 안 되기 때문에 Primary Key. 즉, 기본키입니다.

 

[ 고유식별번호 ]

• 일반 식별정보와 달리 노출되면 위험하다고 판단.

• 예시) 주민등록번호, 운전면허 등록번호, 여권번호 등

 

⟡ 인증

: 식별을 한 뒤, 그 사람 본인이 맞는지 확인하는 작업.

 

[ 인증 정보 ]

• 절대로 노출되면 안 되는 정보.

• 예시) 비밀번호, OTP 등

 

⯌ 로그인 로직 케이스

앞서 설명했듯이 로그인을 할 때

아이디는 식별정보, 비밀번호는 인증정보가 됩니다.

보통 사이트에서 회원가입을 할 때, 아이디를 중복체크를 하는 이유가 바로 이 때문입니다.

 

식별정보를 통해 어느 사용자인지 확인하고, 인증정보를 통해 정말 사용자 본인이 맞는지 확인하는 방법에는 여러 가지가 있습니다.

로그인 로직 케이스를 살펴보겠습니다.

⟡ 식별/인증 동시 처리

식별정보와 인증정보의 확인을 동시에 하는 과정입니다.

• DB에서 입력받은 식별정보와 인증정보가 DB에 저장되어 있는 값과 일치하는지 동시에 확인합니다.

• 식별된 정보가 있을 시 로그인 성공합니다.

⟡ 식별/인증 분리 처리

식별정보와 인증정보의 확인을 분리해서 하는 과정입니다.

• 먼저, DB에서 입력받은 식별정보와 동일한 데이터를 확인합니다.

• 그 후에 식별된 정보가 있을 시 입력받은 인증정보가 일치하는지 비교합니다.

비밀번호 값을 비교하는 것이기에 "==="을 사용하였습니다.

 

두 가지의 식별/인증 처리 방법을 살펴보았습니다.

 

하지만 인증정보를 해시화 시키지 않으면 노출될 위험이 큽니다.

해쉬는 MD5, SHA-1, SHA-2 계열(SHA-256, SHA512등), 최근 등장하여 점차 사용이 늘어나는 SHA-3등이 있습니다.

때문에 hash() 함수를 이용해 인증정보를 해시 처리하는 방식을 살펴보겠습니다.

 

⟡ 식별/인증 동시 처리 & 인증정보 Hash 처리

식별정보와 인증정보의 확인을 분리해서 하는 과정입니다.

• DB에는 현재 회원가입 할 때 SHA-256 해싱 알고리즘으로 해시화 되어있는 비밀번호가 담겨있습니다.

• 입력받은 비밀번호를 저장하고 있는 $pw를 hash() 함수로 sha-256 해싱 알고리즘을 이용하여 또 다른 변수에 저장합니다.

• 그 외에는 '식별/인증 동시 처리'와 방법이 같습니다.

⟡ 식별/인증 분리 처리 & 인증정보 Hash 처리

• '식별/인증 분리 처리'와 비슷하지만 인증정보를 비교하는 부분이 다릅니다.

• 위에서 비밀번호를 해시화한 방법처럼 다른 변수에 입력받은 비밀번호를 해시화해서 담습니다.

• DB에서 아이디를 먼저 구분 후 해시화된 비밀번호를 비교합니다.

⯌ 쿠키와 세션

쿠키와 세션은 사용자의 인증상태를 유지하기 위해 사용되는 기술입니다.

이는 HTTP 프로토콜의 특성인 비연결성과 무상태성으로 인한 웹 서비스의 불편함 때문에 생긴 기술입니다.

• 비연결성 : 클라이언트가 서버로부터 응답을 받게 되면 연결을 바로 끊고, 요청마다 새롭게 다시 해서 연결을 맺는 성질.

• 무상태성 : 서버가 클라이언트의 정보를 저장하지 않고, 각 요청을 독립적으로 처리하는 성질.

 

하지만 저장되는 위치, 보안성, 유효기간 등에서 차이가 있기 때문에 마냥 같다고만은 볼 수 없습니다.

쿠키와 세션의 각 특징에 대해 살펴보겠습니다.

⟡ 쿠키

: 서버가 쿠키를 생성하여 클라이언트에 전달하고, 후에 클라이언트가 서버에 요청할 때마다 쿠키를 함께 전송함으로써 인증상태를 유지합니다.

 

• 저장되는 위치 : 웹 브라우저.

• 보안성 : 클라이언트에 저장되기에 변조와 탈취 위험. 

• 유효기간 : 만료일을 지정 가능하며, 미지정 시 브라우저 종료할 때 삭제.

• 장점 : 클라이언트에 보관되기에 서버 부하가 없고 빠름.

• 단점 : 세션에 비해 보안이 취약.

 

[ 쿠키가 생긴 이유 ]

• 웹사이트가 자신을 기억하지 못하고 계속 로그인을 다시 해야만 하는 상황이 반복되는 불편함을 해결하기 위해 생겼습니다.

 

[ 쿠키의 흐름 ]

1) 클라이언트가 서버에게 요청.

2) 서버는 정보를 처리 후, 응답 헤더에 쿠키를 포함시켜 클라이언트에 전달.

3) 클라이언트는 받은 쿠키를 저장.

4) 서버에게 요청을 보낼 때마다 쿠키를 포함하여 전달.

5) 서버는 쿠키를 확인하여 사용자를 확인.

⟡ 세션

: 서버가 각 클라이언트들에게 고유한 세션ID를 발급하고, 이 세션 ID를 클라이언트에게 쿠키형태로 전달을 합니다.

 

• 저장되는 위치 : 서버.

• 보안성 : 세션ID만 클라이언트에 저장되고, 실제 정보는서버에 보관되기에 쿠키보다 안전.

• 유효기간 : 보통 브라우저를 종료하면 세션이 종료, 서버에서 설정한 유효기간이 지나면 자동 삭제.

• 장점 : 쿠키에 비해 보안이 우수.

• 단점 : 서버 자원을 사용하기에 접속자가 많아질수록 속도가 느려짐.

 

[ 세션이 생긴 이유 ]

• 악의적인 사용자가 쿠키 값을 임의로 변경하여 중요한 정보가 노출될 수 있는 위험 때문에 보완된 기법입니다.

• 대표적으로 클라이언트가 아닌 서버에 중요 정보가 저장하여 데이터를 보호한다는 점과 랜덤한 문자열인 세션ID를 서버가 발급하여 공격자가 쉽게 예측하기 어렵게 만들어 쿠키보다 보완된 기법입니다.

 

[ 세션의 흐름 ]

1) 클라이언트가 서버에게 요청.

2) 서버가 세션을 생성 후, 세션ID를 클라이언트에 전달.

3) 클라이언트는 받은 세션ID를 저장.

4) 서버에게 요청을 보낼 때마다 쿠키에 세션ID를 담아서 전달.

5) 서버는 세션ID를 바탕으로 서버에 저장되어 있는 세션 정보를 확인.

 

 

 

 

'웹 모의해킹 취업반 스터디 > 수업' 카테고리의 다른 글

[ 1개월 | 2주차 수업 ] 데이터베이스와 SQL 쿼리문 & DB 요청  (0) 2025.04.16
[ 1개월 | 1주차 수업 ] 웹 서버 이해 & 동적 페이지  (0) 2025.04.07
'웹 모의해킹 취업반 스터디/수업' 카테고리의 다른 글
  • [ 1개월 | 2주차 수업 ] 데이터베이스와 SQL 쿼리문 & DB 요청
  • [ 1개월 | 1주차 수업 ] 웹 서버 이해 & 동적 페이지
ㅤ민도화ㅤ
ㅤ민도화ㅤ
  • ㅤ민도화ㅤ
    Security Note
    ㅤ민도화ㅤ
    • 분류 전체보기 (6)
      • 웹 모의해킹 취업반 스터디 (6)
        • 수업 (3)
        • 과제 (3)
  • 태그

    웹 모의해킹 취업반
    SQLi
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
ㅤ민도화ㅤ
[ 1개월 | 3주차 수업 ] 식별, 인증 & 로그인 로직 & 쿠키, 세션
상단으로

티스토리툴바