웹 보안에 대해 공부하며 내용을 정리했습니다.
보통 웹이라고 하면 World Wide Web이라는 인터넷 상에서 정보를 공유하고 접근할 수 있게 해주는
정보 시스템을 뜻하지만 웹 보안에서 다루는 ‘웹’은 좀 더 넓은 범위를 포함하는 것 같다.
웹 브라우저로 접근하는 전통적인 웹사이트뿐만 아니라, 모바일 앱의 백엔드 서버, 클라우드 서비스,
IoT 기기와 통신하는 서버, 게임의 API 서버 등 현대의 대부분 애플리케이션이 웹 기술 기반으로 동작한다.
그렇기에 웹 보안은 웹 기술 전반을 다루며 웹 프로토콜과 기술을 사용하는 모든 시스템의 보안을 포함한다고 볼 수 있는 것 같다.
웹의 시작
웹의 시작은 1990년대에 연구자들 간의 정보 공유를 위해 발명된 World Wide Web(WWW)이다.
- HTML (HyperText Markup Language): 문서 작성 언어
- HTTP (HyperText Transfer Protocol): 통신 프로토콜
- URL (Uniform Resource Locator): 리소스 주소 체계
를 통해서 웹사이트가 개발되었다.
인터넷과 웹의 차이
인터넷
인터넷은 전 세계 컴퓨터를 연결하는 네트워크 인프라로 TCP/IP 프로토콜 기반의 물리적 네트워크이다.
웹
인터넷 위에서 동작하는 서비스 중 하나로 HTTP/HTTPS 프로토콜을 사용하여 정보를 공유하며 브라우저를 통해 접근한다.
인터넷은 도로망이고, 웹은 그 도로 위를 다니는 자동차 중 하나라고 할 수 있다.
인터넷을 사용하지만 웹이 아닌 것들로는
- 이메일 (SMTP, POP3)
- 파일 전송 (FTP)
- 원격 접속 (SSH, Telnet)
- P2P 파일 공유
등이 있다.
웹의 기본 구조
웹은 클라이언트-서버 모델로 동작한다.
클라이언트
서비스를 요청하는 쪽이다.
웹 브라우저:
- Chrome, Safari, Firefox 등
- HTML, CSS, JavaScript를 해석하여 화면에 표시
기타 클라이언트:
- 모바일 앱 (내부적으로 HTTP API 호출)
- API 테스팅 도구 (Postman, curl)
- 웹 크롤러/봇
서버
클라이언트의 요청을 처리하고 응답을 제공한다.
일반적인 웹 서버 구조:
1
2
3
4
5
6
7
클라이언트 요청
↓
웹 서버 (Nginx, Apache, IIS)
↓
애플리케이션 서버 (Node.js, Python, PHP, Java)
↓
데이터베이스 (MySQL, PostgreSQL, MongoDB)
웹 서버:
- 정적 파일 제공 (HTML, CSS, JS, 이미지)
- 요청을 애플리케이션 서버로 전달
- 예: Nginx, Apache
애플리케이션 서버:
- 동적 콘텐츠 생성
- 비즈니스 로직 처리
- 데이터베이스 연동
- 예: Node.js, Django, Spring Boot
HTTP/HTTPS
클라이언트와 서버가 통신하는 프로토콜이다.
HTTP (HyperText Transfer Protocol)
- 요청-응답 방식으로 동작하며 각 요청은 독립적
- 기본 포트: 80
HTTPS (HTTP Secure)
- HTTP + SSL/TLS 암호화
- 데이터 암호화로 중간자 공격 방지
- 서버 인증을 통한 신뢰성 확보
- 기본 포트: 443