본문 바로가기
Server/Ubuntu

[Server] Web Server란?

by 재현짱 2024. 5. 30.
728x90

Web Server 

 

3 Tier 구조 

  • WEB Server (정적)
  • Web Application Server (동적)
  • DataBase

3 tier

장점

  • 효율성 증가
  • 이중화를 통한 서비스의 리스크 및 업무 부하를 줄일 수 있음

단점

  • 관리 포인트의 증가
  • 문제 발생 시 빠른 대처 어려움
  • 서버가 많아져 서비스 규모 및 사용자 증가에 따른 적당한 계층 구조 및 설계가 고려됨

 

동작 원리

 

1. 클라이언트에서 웹 브라우저를 실행하고 웹 페이지를 요청

 

2. 웹 브라우저는 요청한 페이지의 URL을 해석하여 HTTP 요청 메세지를 작성

  • HTTP 요청 메세지는 주로 요청 메서드가 존재 (Get, Post 등)

3. 웹 브라우저는 HTTP 요청 메세지를 웹 서버로 전송

  • 생성된 HTTP 요청 메세지는 TCP IP 프로토콜을 사용하여 네트워크를 통해 해당 URL의 도메인 네임에 매핑된 IP Address를 가진 웹 서버 전송

4. 웹 서버는 HTTP 요청을 WAS로 전달

  • 웹 서버는 클라이언트로부터 HTTP 요청 수신 후 정적 콘텐츠같은 경우 웹 서버가 직접 응답
  • 동적 컨텐츠 같은 경우 WAS로 전달

5. WAS는 요청된 웹 페이지를 생성하기위해 필요한 데이터를 조회하기 위한 목적으로 DB 서버와 연결

  • WAS(Tomcat, Jeus 등) 동적 컨텐츠 생성을 위해 필요한 데이터를 DB 서버와 상호 작용

6. DB 서버에서는 요청된 데이터를 조회하여 WAS로 응답

  • DB 서버는 WAS로부터 쿼리를 실행
  • 요청된 데이터를 조회하여 WAS 응답

7. WAS는 DB 서버에서 받은 데이터를 이용하여 웹 페이지 생성, HTTP 응답 메시지를 생성

  • WAS는 DB서버로부터 받은 데이터를 사용하여 동적인 웹 페이지를 생성
  • 생성된 웹 페이지는 HTTP 응답 메세지로 포장

8. HTTP 응답 메세지는 웹 브라우저로 전송

  • WAS가 생성한 HTTP 응답 메세지는 웹 서버를 거쳐서 클라이언트의 웹 브라우저로 전송

9, 웹 브라우저는 HTTP 응답 메세지를 해석하여 웹 페이지를 화면에 표시

  • 웹 브라우저는 수신한 HTTP 응답 메세지를 해석 및 포함된 HTML + CSS + JAVA Script 등을 처리하여 사용자 웹 페이지를 화면에 표시

Get 방식

  • 변수를 통하여 간단하게 원하는 값을 전달할 때 사용
  • 전달하는 변수가 여러개면 "&" 를 붙임
  • 주소 뒤에 " ? " 를 붙임
  • 주소창에 노출되는 정보가 많아지면 의도치 않은 행위를 실행시킬 수 있음

Get 방식 문제점

  • URL 매개변수 노출
  • 피싱 공격에 활용됨 (악의적인 사이트로 리다이렉트)
  • CSRF 공격: 클라이언트가 인지하지 못한 상태에서 공격자가 의도한 요청을 실행

해결방안

  • Post 요청 방식을 사용, 민감한 정보가 URL에 포함되지 않도록 함
  • URL을 통한 정보 전달 시 입력값을 철저히 검증하도록 함

Post 방식

  • <form> 에서 사용된 컨트롤의 선택사항을 action에 명시된 파일 또는 주소로 전달
  • 전달되는 값이 노출되지않음
  • 데이터 길이 제약이 없음

[표 1] Get 방식과 Post 방식의 차이

특성 GET POST
데이터 전송 방식 URL에 쿼리 스트링으로 데이터 포함 *HTTP 메시지 바디에 데이터 포함
보안 데이터가 URL에 노출되어 상대적으로 보안에 취약 데이터가 바디에 포함되어 비교적 보안이 높음
전송 데이터 양 제한적 (일반적으로 2048자 미만) 대용량 데이터 전송 가능
브라우저 캐시 가능 불가능
즐겨찾기 및 북마크 가능 불가능
데이터 변경 주로 데이터 조회용 (데이터 변경 없음) 주로 데이터 수정 및 생성 용도
데이터 타입 ASCII 문자 (특수 문자는 인코딩 필요) 바이너리 데이터 포함 가능
중복 전송 URL을 재사용하여 중복 전송 가능 일반적으로 사용자가 의도적으로 재전송해야함
파라미터 전달 방식 URL에 직접 전달, ?와 &로 구분 HTTP 메시지 바디에 JSON,XML 등 다양한 형식으로 전달 가능
히스토리 기록 요청이 URL에 포함되어 브라우저 히스토리에 기록됨 요청이 브라우저 히스토리에 기록되지 않음
서버 로그 기록 URL에 포함된 데이터가 서버 로그에 기록됨 서버 로그에는 URL만 기록됨, 데이터는 기록되지 않음
데이터 길이 제한 브라우저와 서버에 따라 제한적 제한 없음 (서버 설정에 따라 다름)
주요 용도 데이터 조회 (검색, 링크 클릭 등) 데이터 전송 (폼 제출, 파일 업로드 등)

 

*HTTP 메시지 바디: HTTP 요청 또는 응답에서 본문을 의미, 클라이언트와 서버 간에 전송되는 실제 데이터를 포함하는 부분 HTTP 메시지는 크게 Header와 Body로 나뉨

 

보안위협

  • 스토어드 XSS(stored Cross Site Script): 게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 사용자(Client) 쿠키 및 기타 개인정보를 특정 사이트로 전송시키는 공격
  • 악의적인 스크립트(PHP 기반)가 게시판 등과 같이 서버에 저장되어 있다가 접속자가 클릭하면 스크립트가 실행되는 공격 기법
  • ex) 쿠키값 탈취, 악의적인 사이트 유도
  • 웹 어플리케이션에서 정상적인 경로를 통한 요청과 비정상적인 경로를 통한 요청을 서버가 구분하지 못할 경우 공격자가 스크립트 구문을 이용하여 정상적인 사용자로 하여금 조작된 요청을 전송하도록 하여 "게시판 설정 변경,자동댓글,회원등급 상승" 등의 문제가 발생할 수 있는 취약점

HTTP 프로토콜의 기초

WEB/WAS 구분 이유

 

WEB

  • 클라이언트는 HTML 문서를 먼저 받고 그에 필요한 이미지 파일을 요청하면 그때서야 이미지 파일을 받아볼 수 있음

WAS

  • 웹 페이지안에 정적/동적 콘텐츠가 모두 존재
  • WAS를 통해 요청에 맞는 데이터를 DB에 가져와 비지니스로직에 맞게 그때 그때 결과를 만들어서 제공

WEB/WAS 분리 목적

 

1. 기능을 분리, 서버 부하 방지

 

2. 물리적인 분리를 통한 "보안 강화"

 

3. 웹에 여러가지 WAS 연결가능

  • 로드 밸런싱, 무중단 운영
  • Fail over 장애 극복
  • 여러 APP 서비스 제공 가능

HTML

  • *마크업 언어(Markup Language)
  • 표현적 마크업, 절차적 마크업, 기술적 마크업
  • 단순히 페이지의 틀을 잡아주는 언어

* 마크업 언어: 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어

 

PHP

  • *스크립트 언어 (Script Language)
  • 하이퍼 텍스트 전처리
  • 서버측에서 주로 사용되는 언어
  • 챗봇, 사용자가 특정 지점을 지나갈 때 보이는 애니메이션
  • 사용자가 수동으로 페이지를 새로고침 안해도 화면에서 이루어지는 모든 동적인 기능을 포함
  • 조건문의 형태로 작성됨
  • 웹 서버에서 컨텐츠를 가져올 수 있게 만듦

* 스크립트 언어: 어떤 요청이 발생할 때마다 코드내에서 차례차례 실행되어야 하는 프로세스를 자동화하는데 사용되는 코딩언어의 한 종류