모의해킹 스터디 3주차 정리

2024. 10. 31. 05:46·모의해킹/모의해킹 스터디

로그인 이란?

  • 식별과 인증 작업
  • 사용자가 데이터를 입력하면, 데이터와 일치하는 값을 찾아내고 그 값에 해당 사용자가 맞는지 확인하는 작업

식별/인증

식별이란?

  • 수 많은 데이터 중 특정 데이터를 찾아내는 작업
  • 식별 정보는 유니크해야 하므로 보통 PK(Primary Key)로 둠
    • Primary Key란?
      • 데이터베이스에서 특정 데이터를 유일하게 식별하기 위해 사용되는 필드 또는 필드의 집합.
      • 각 데이터에 대해 고유함.
      • NULL값 허용 안됨
      • 테이블당 하나의 컬럼에 기본키를 지정할 수 있음
  • ID값, 전화번호, 이메일 등으로 식별할 수 있음
  • 노출이 되어도 상관 없음
  • 고유식별번호(주민등록번호, 운전면허 번호 등)와는 구분해야 함 -> 노출 되면 안됨

인증이란?

  • 해당 사용자 본인이 맞는지 확인하는 작업
  • 인증정보(ex) 비밀번호, OTP 등)을 사용하여 비교함

HASH란?

  • 입력 데이터를 고정된 길이의 문자열로 변환하는 단방향 함수
  • 복호화 불가능
  • 비밀번호 저장, 데이터 무결성 검사 등에 활용됨
  • 암호화와 인코딩과는 다름

로그인 케이스

1. 식별과 인증을 동시

$sql = "select * from member where id = '$user_id' and pass = '$user_pass'"

$ret = $sql.execute();

if($ret){
	//로그인 성공
}else{
	//로그인 실패
}

2. 식별과 인증을 분리

$sql = "select * from member where id = '$user_id'" //식별

$db_pass = sql.ret['pass']
//인증
if($db_pass == $user_pass){
	//로그인 성공
}else{
	//로그인 실패
}

3. 식별과 HASH를 이용하여 인증을 동시

$hashed_pw = hash('sha256', $user_pass); // 비밀번호 해시 적용

$sql = "select * from member where id = '$user_id' and pass = '$hashed_pw'";

$ret = $sql.execute();

if($ret){
	//로그인 성공
}else{
	//로그인 실패
}

4. 식별과 HASH를 이용하여 인증을 분리

$sql = "SELECT * FROM member WHERE id = '$user_id'"; // 식별
$ret = $sql.execute();

//인증
if ($ret) {
    // 데이터베이스에서 가져온 해시된 비밀번호
    $db_pass = $ret['pass'];
    
    // 입력한 비밀번호와 해시된 비밀번호를 비교
    if (password_verify($user_pass, $db_pass)) {
        // 로그인 성공
    } else {
        // 로그인 실패
    }
} else {
    // 로그인 실패
}

로그인 유지

쿠키

  • 웹 서버가 클라이언트(브라우저)에 저장하는 작은 데이터 파일
  • 로그인 상태 유지, 쇼핑 카트 정보 저장하는 데에 사용
  • 클라이언트 측에 저장되므로, 사용자가 수정할 수 있으며, 악의적인 접근에 노출될 위험이 있음
    • 중요한 정보는 쿠키에 저장하지 않는 것이 좋음

세션

  • 웹 서버가 사용자의 상태 정보를 서버에 저장하는 파일
  • 사용자 로그인 상태 유지, 사용자 정보 및 상태 관리, 보안이 필요한 데이터 저장하는 데에 사용
  • 쿠키에 랜덤한 세션 ID 값을 저장하여 세션을 식별함
  • 데이터가 서버에 저장되므로, 클라이언트에서 직접적으로 수정할 수 없음
    • 쿠키에 비해 보안성이 상대적으로 높음

후기

  • 단방향으로 데이터를 변환하여 복호화할 수 없는 특성이 있는 해시 알고리즘과 웹에서 사용자 정보를 저장하고 관리하는 대표적인 방식인 쿠키와 세션에 대해 배웠다.
  • 웹 개발을 했을 당시 SHA-256 알고리즘만 사용하여 따로 찾아보지 않았는데 이번 학습으로 해시 알고리즘에 대해 찾아보면서 여러 가지 알고리즘이 있다는 것을 알았다. 각각의 특징과 종류에 대하여 추가로 학습하여 정리해야겠다.
  • 웹에서 사용자 정보를 저장하고 인증 상태를 유지 및 관리하는 방식은 쿠키, 세션 외에도 JWT나 로컬 스토리지, 세션 스토리지 등 여러 방식이 있고 각각의 상호작용을 어떻게 하는지 학습하여 추가로 정리해야겠다.
728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'모의해킹 > 모의해킹 스터디' 카테고리의 다른 글

모의해킹 스터디 3주차 과제(2) - 리눅스 환경에서 PHP로 JWT 구현  (0) 2024.11.06
모의해킹 스터디 3주차 과제(1) - 로그인 케이스 구현  (0) 2024.11.01
모의해킹 스터디 2주차 과제(2) - 로그인  (0) 2024.10.28
모의해킹 스터디 2주차 과제(1) - 회원가입  (0) 2024.10.27
모의해킹 스터디 2주차 과제 - Mini Mission  (0) 2024.10.26
'모의해킹/모의해킹 스터디' 카테고리의 다른 글
  • 모의해킹 스터디 3주차 과제(2) - 리눅스 환경에서 PHP로 JWT 구현
  • 모의해킹 스터디 3주차 과제(1) - 로그인 케이스 구현
  • 모의해킹 스터디 2주차 과제(2) - 로그인
  • 모의해킹 스터디 2주차 과제(1) - 회원가입
BPM37093
BPM37093
luna의 IT기술 정리
  • BPM37093
    IT Study Log
    BPM37093
  • 링크

  • 글쓰기 관리
    • 분류 전체보기 (43)
      • 모의해킹 (37)
        • 웹해킹 (1)
        • 모의해킹 스터디 (36)
      • Web (5)
        • 웹 보안 (1)
        • 웹 크롤링 (1)
      • Data (0)
      • Cloud (0)
      • Network (1)
  • 인기 글

  • 방문자 수

    방문자수Total

    • Today :
  • 태그

    상태코드
    HTTP
    웹해킹
    Network
    티스토리챌린지
    메서드
    웹개발
    burpsuite
    Chrome
    WEB
    hash
    sqlinjection
    모의해킹스터디
    httprequest
    NAT
    javascript
    php
    HTML
    HttpResponse
    SQL
    오블완
    mysql
  • hELLO· Designed By정상우.v4.10.1
BPM37093
모의해킹 스터디 3주차 정리
상단으로

티스토리툴바