-
웹 통신 구조
- 웹은 클라이언트(브라우저)와 서버 간의 통신으로 동작하며, 그 핵심은 HTTP 프로토콜이다.
- Request (요청)
- 사용자가 서버에 데이터를 요청하는 구조
- 구성요소: Method(GET/POST 등), URL, Header, Body
- Response (응답)
- 서버가 클라이언트의 요청에 대한 결과를 반환
- 구성요소: Status Code, Header, Body
-
상태 관리
- 쿠키
- 저장위치 : 브라우저(서버로 자동 전송)
- 수명 : 설정된 만료 시점
- 목적 : 인증, 추적
- 세션
- 저장 위치 : 서버
- 수명 : 브라우저 종료 시
- 목적 : 사용자 상태 유지
- 로컬스토리지
- 저장 위치 : 브라우저 로컬
- 수명 : 삭제 전까지
- 목적 : 클라이언트 데이터 저장
-
DOM(Document Object Model)
- HTML 문서의 구조를 객체 트리 형태로 표현한 모델
- JavaScript를 통해 동적으로 요소를 수정 가능
-
AJAX (Asynchronous JavaScript and XML)
- 서버와 비동기 통신을 하며 전체 페이지를 새로 고침하지 않음
- XMLHTTPRequest기반
-
Fetch API
- 최신 표준 방식
- Promise 기반으로 직관적 사용 가능
-
SQL (Structured Query Language)
- 데이터베이스와 직접 통신
- 취약점: SQL Injection
-
ORM (Object-Relational Mapping)
- 객체지향적으로 DB 제어 가능 (Ex: Django ORM)
- SQL 인젝션 방지에 도움은 되나, 완전한 보안은 아님
-
입력값 검증 (Input Validation)
- 모든 사용자 입력은 반드시 서버단에서 검증해야 함
- 검증 요소: 길이, 타입, 포맷, 특수문자 필터링 등
-
세션 관리 (Session Management)
- 로그인 상태 유지를 위해 사용
- 일반적으로 서버가 생성한 Session ID를 브라우저의 쿠키에 저장
-
보안 지침
- 세션 탈취 방지를 위해 HTTPS, HttpOnly, Secure 옵션 사용
- 로그인 후 세션 재생성 권장
- 세션 타임아웃 설정