현재 선택한 정보보안 과정

정보보안기사 필기 이론 학습

이론 목록으로 돌아가기

웹 애플리케이션 구조와 신뢰 경계

웹 서버·WAS·DB의 역할과 요청 처리 경계를 구분합니다.

예상 읽기 5

1. 클라이언트와 서버는 장비 이름이 아니라 역할이다

네트워크에서 서비스를 요청하는 쪽을 클라이언트(client), 요청을 받아 기능을 제공하는 쪽을 서버(server)라고 한다.

  • 웹 브라우저가 페이지를 요청하면 브라우저는 클라이언트다.
  • 웹 서버가 브라우저의 요청을 받으면 웹 서버는 서버다.
  • 같은 웹 서버나 애플리케이션이 데이터베이스에 질의를 보낼 때는 데이터베이스 입장에서 다시 클라이언트 역할을 한다.

따라서 “서버는 항상 한 대의 물리 장비”라고 생각하면 구조를 잘못 이해하기 쉽다. 서버는 통신과 처리에서 맡은 논리적 역할이며, 한 장비가 여러 역할을 동시에 수행하거나 한 역할이 여러 장비에 분산될 수 있다.

2. 웹 애플리케이션을 구성하는 주요 역할

2.1 클라이언트

브라우저, 모바일 앱, API 클라이언트처럼 사용자의 의도를 HTTP 요청으로 표현하고 서버의 응답을 사용하는 역할이다. 사용자가 입력한 값뿐 아니라 쿠키, 요청 헤더, 업로드 파일 등도 서버가 처리할 입력이 될 수 있다.

2.2 웹 서버 또는 리버스 프록시

외부의 HTTP/HTTPS 요청을 처음 받는 접점이다. 정적 파일을 직접 반환하거나, 동적 처리가 필요한 요청을 애플리케이션으로 전달할 수 있다. 실제 서비스에서는 TLS 종료, 접근 제어, 로드 분산, 요청 크기 제한 같은 기능을 함께 맡기도 한다.

2.3 애플리케이션 / WAS

WAS(Web 애플리케이션 서버)는 웹 요청에 따라 프로그램 로직을 실행하는 서버 측 역할을 가리킬 때 널리 사용하는 표현이다. 로그인 확인, 게시글 저장, 주문 처리, 권한 검사, API 처리 등이 여기에 해당한다.

웹 서버와 WAS가 반드시 물리적으로 분리되어야 하는 것은 아니다. 하나의 제품이나 프로세스가 정적 콘텐츠 제공과 애플리케이션 실행을 모두 처리할 수도 있다. 시험에서는 제품 이름보다 각 역할이 무엇을 하는지를 구분하는 것이 중요하다.

2.4 데이터베이스

DBMS(Database Management System)는 사용자, 권한, 주문, 게시글 같은 업무 데이터를 저장하고 검색·변경한다. 일반적인 웹 구조에서는 외부 사용자가 DB에 직접 접속하기보다 애플리케이션이 필요한 작업을 대신 수행한다.

이 구조에서는 애플리케이션이 DB에 사용하는 계정도 필요한 권한만 가지도록 제한해야 한다. 웹 애플리케이션이 침해되더라도 DB 전체 권한까지 자동으로 넘어가지 않게 하기 위해서다.

3. 이름을 입력한 뒤 응답을 받기까지

사용자가 브라우저에 https://shop.example을 입력했다고 가정하자. 실제 구현은 다양하지만 학습할 때는 다음 순서로 나누면 이해하기 쉽다.

  1. 이름 해석: DNS를 통해 서비스 이름에 대응하는 접속 주소를 찾는다.
  2. 연결과 전송 보호: 클라이언트가 서버에 연결한다. HTTPS라면 HTTP 메시지를 보내기 전에 TLS를 이용해 보호된 통신 채널을 만든다.
  3. HTTP 요청: 클라이언트가 원하는 자원이나 동작을 요청 메시지로 보낸다.
  4. 웹 접점 처리: 정적 파일은 웹 서버가 바로 반환할 수 있고, 업무 처리가 필요하면 애플리케이션으로 요청을 전달한다.
  5. 업무 로직과 권한 판단: 애플리케이션이 입력을 해석하고 현재 사용자가 해당 기능·데이터에 접근할 수 있는지 확인한다.
  6. DB 접근: 필요한 경우 애플리케이션이 자신의 DB 권한으로 데이터를 조회하거나 변경한다.
  7. 응답 반환: 결과가 애플리케이션 → 웹 접점 → 클라이언트 순으로 돌아온다.
좌우로 이동해 그림을 확인하세요.그림 크게 보기
웹 요청의 경로와 보호 위치
웹 요청의 경로와 보호 위치

4. 신뢰 경계는 무엇을 뜻하는가

신뢰 경계(trust boundary)는 데이터가 서로 다른 신뢰 수준의 영역 사이를 넘어가는 지점이다. 경계를 넘는 데이터는 “이미 내부로 들어왔으니 안전하다”고 가정해서는 안 된다.

대표적으로 다음을 확인한다.

  • 브라우저가 보낸 입력값이 형식과 용도에 맞는가?
  • 로그인 여부뿐 아니라 요청한 기능에 대한 권한이 있는가?
  • 애플리케이션이 DB에 과도한 권한으로 접속하지 않는가?
  • 외부 서비스에서 받은 데이터도 필요한 검증을 거치는가?
  • 오류 메시지나 응답에 내부 정보가 과도하게 노출되지 않는가?

이 관점은 이후 SQL 삽입, XSS, CSRF, 파일 업로드, 경로 조작 같은 취약점을 “이름”으로만 암기하지 않고 어느 경계에서 어떤 검사가 빠졌는지 이해하는 데 사용된다.

5. 장애와 보안 문제를 구조로 나누어 본다

“웹이 안 된다”는 현상 하나도 원인은 여러 단계에 있을 수 있다.

관찰되는 현상우선 구분할 영역의 예
이름으로 접속이 안 됨DNS 이름 해석
연결 자체가 실패함네트워크 연결, 서버 수신 상태, TLS 설정
정적 파일은 나오지만 로그인만 실패함애플리케이션, 인증 처리, DB
특정 사용자만 다른 사람 데이터가 보임애플리케이션 인가 로직
DB 오류가 화면에 상세히 노출됨예외 처리와 정보 노출

이렇게 계층과 역할을 나누면 운영 장애 분석과 보안 취약점 판단을 함께 정리할 수 있다.

스스로 확인하기

개념 확인 문제

문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.

01웹 서버와 WAS는 반드시 별도 물리 서버인가?
정답 및 해설

아니다. 웹 접점·정적 파일 제공과 업무 로직 실행이라는 역할은 구분되지만 한 시스템에서 함께 수행할 수 있다.

02HTTPS를 적용하면 다른 사용자의 주문 조회도 방지되는가?
정답 및 해설

전송 보호와 객체 인가는 별개다. 서버가 현재 사용자에게 해당 주문을 읽을 권한이 있는지 검사해야 한다.