웹 보안이란 무엇인가

웹 보안의 정의, CIA 3요소, 공격자와 방어자의 시각 차이, 그리고 왜 웹 개발자가 보안을 알아야 하는지 알아봅니다.

· 8 min read · PALDYN Team

웹 애플리케이션은 오늘날 비즈니스의 핵심 자산이다. 그만큼 공격 대상이 되는 빈도도 폭발적으로 증가했다. OWASP 통계에 따르면 전체 사이버 공격의 43% 이상이 웹 애플리케이션을 대상으로 하며, 한 번의 침해사고가 기업에 평균 수십억 원의 손실을 안긴다. 이 시리즈는 웹 보안을 처음 접하는 개발자부터 실무에서 보안을 강화하고 싶은 엔지니어까지, 61개 주제를 통해 웹 보안의 전 영역을 체계적으로 탐색한다.

웹 보안의 정의

웹 보안(Web Security)은 웹 애플리케이션과 그 인프라를 무단 접근, 데이터 유출, 서비스 중단으로부터 보호하는 실천과 기술의 총합이다. 단순히 방화벽을 설치하거나 HTTPS를 켜는 것에 그치지 않는다. 코드 작성 방식, 아키텍처 설계, 배포 구성, 운영 모니터링 모두가 보안의 일부다.

보안은 기능이 아니라 속성이다. 기능은 개발 이후에 붙일 수 있지만, 속성은 처음 설계 단계부터 녹아들어야 한다. 나중에 보안을 덧붙이려 하면 비용이 10배 이상 든다는 것이 업계의 정설이다.

웹 보안 위협 전체 지도 — 공격자와 방어자

공격자의 시각

공격자는 웹 애플리케이션을 목적 달성의 수단으로 본다. 금전적 이익(랜섬웨어, 데이터 판매), 정치적 목적(핵티비즘), 경쟁 우위(산업 스파이), 혹은 단순한 호기심이 동기가 된다.

공격자가 노리는 것은 크게 세 가지다.

데이터: 개인정보, 결제 정보, 기업 기밀. 다크웹에서 즉시 현금화할 수 있다.

권한: 관리자 계정, 서버 셸 접근. 더 깊은 침투를 위한 발판이 된다.

가용성: 서비스 자체를 마비시켜 경쟁사 대비 우위를 점하거나 협박 수단으로 사용한다.

공격자는 한 번의 취약점으로 수백만 사용자를 동시에 공격할 수 있다. 반면 방어자는 모든 공격 벡터를 막아야 한다. 이 비대칭성이 웹 보안을 어렵게 만드는 핵심이다.

방어자의 시각

방어자(개발자·보안 엔지니어)는 리스크 관리의 관점으로 접근한다. 모든 위협을 완벽히 차단하는 것은 현실적으로 불가능하다. 대신 다음 세 가지 질문을 반복한다.

  1. 무엇을 보호해야 하는가? — 자산(Asset) 파악
  2. 어떤 위협이 존재하는가? — 위협 모델링(Threat Modeling)
  3. 어디까지 투자할 것인가? — 리스크와 비용의 균형

효과적인 방어는 특정 기술 하나가 아니라 **심층 방어(Defense in Depth)**에 기반한다. 한 계층이 뚫려도 다음 계층이 공격을 막아낸다.

웹 보안 계층 구조 — 네트워크부터 데이터까지

CIA 3요소: 보안의 목표

보안의 목표는 세 가지 속성으로 요약된다.

기밀성(Confidentiality): 권한 있는 사람만 데이터에 접근할 수 있어야 한다. 암호화, 접근 제어, 최소 권한 원칙이 이를 달성한다.

무결성(Integrity): 데이터가 생성 이후 허가 없이 변조되지 않아야 한다. 해시, 전자 서명, 버전 관리가 이를 보장한다.

가용성(Availability): 서비스가 필요할 때 정상적으로 동작해야 한다. 이중화, DDoS 방어, 장애 복구 계획이 핵심이다.

# CIA 위반 사례 예시
# 기밀성 위반: 암호화 없이 민감 데이터 전송
response = requests.get("http://api.example.com/user/123")  # HTTP, 도청 가능

# 무결성 위반: 서명 없는 JWT 허용
decoded = jwt.decode(token, options={"verify_signature": False})  # 위험

# 가용성 위반: 레이트 리미팅 없는 엔드포인트
@app.route("/login", methods=["POST"])
def login():
    # 초당 수천 번 요청 가능 → 브루트 포스 허용
    return check_credentials(request.json)

개발자가 보안을 알아야 하는 이유

많은 개발자가 “보안은 보안팀의 일”이라고 생각한다. 이는 위험한 착각이다. 대부분의 웹 취약점은 코드 레벨에서 발생한다. SQL 인젝션은 개발자가 입력을 검증하지 않아서, XSS는 출력을 인코딩하지 않아서 생긴다. 보안팀이 나중에 발견해도, 수정 비용과 이미 발생한 피해를 되돌릴 수 없다.

Shift Left Security, 즉 보안을 개발 초기 단계로 당겨오는 개념이 업계 표준이 된 이유가 여기 있다. 개발자가 보안을 이해하면 코드 리뷰 단계에서 취약점을 잡을 수 있고, 이는 배포 후 패치보다 수십 배 저렴하다.

이 시리즈에서 다룰 내용

이 시리즈는 6개 파트 61개 주제로 구성된다. **1부(기초)**에서는 CIA, 위협 모델링, 공격 표면, 보안 사고방식을 다룬다. **2부(인증·인가)**에서는 비밀번호 해싱부터 OAuth 2.0, MFA까지 다룬다. **3부(OWASP Top 10)**에서는 SQL 인젝션, XSS, CSRF 등 가장 흔한 웹 취약점을 코드와 함께 해부한다. **4부(브라우저 보안)**에서는 SOP, CSP, 쿠키 보안을 다루고, **5부(암호화)**에서는 TLS와 실용 암호 기초를, **6부(실무)**에서는 침투 테스트, WAF, 보안 감사를 다룬다.

각 글은 독립적으로 읽을 수 있지만, 순서대로 읽으면 개념이 자연스럽게 연결된다. 코드 예제는 Python, JavaScript, SQL을 중심으로 하되 언어보다 개념에 집중한다.


다음 글: 정보보안 3요소(CIA) 완전 이해


읽어주셔서 감사합니다. 😊