인터넷을 사용하다 보면 뉴스, SNS, 쇼핑몰 등 수많은 웹사이트를 이용하게 됩니다. 그런데 우리가 로그인한 계정, 결제 정보, 개인 데이터는 항상 누군가에게 노출될 위험이 있습니다.
바로 이런 이유 때문에 웹 보안이 중요합니다. 초급 개발자나 비전공자도 웹을 개발하거나 정보처리기사 실기를 준비할 때, XSS, CSRF, SQL Injection 같은 공격과 대응 방법을 이해하는 것이 필수입니다.
이 글에서는 쉽고 재밌는 비유와 실무 예시, 그리고 정보처리기사 실기 포인트까지 한 번에 정리해 드립니다. 웹 개발자라면 반드시 알고 있어야 하는 웹 보안의 핵심을 지금 바로 시작해봅시다.

1. 웹 보안이 중요한 이유 – “집과 도어락 비유”
웹은 공개된 공간입니다.
즉, 누구나 접근할 수 있고, 공격자도 접근할 수 있습니다.
- 웹사이트 = 내 집
- 사용자 데이터 = 내 금고 속 현금과 물건
- 보안 취약점 = 잠기지 않은 출입구
웹 보안은 몰래 들어와 데이터를 훔치지 못하도록 하는 도어락과 안전장치입니다.
2. XSS (Cross-Site Scripting) – 몰래 장난꾸러기가 들어오는 느낌
2-1. XSS 정의
XSS는 공격자가 악성 스크립트를 웹 페이지에 삽입하여 다른 사용자의 브라우저에서 실행되도록 하는 공격입니다.
2-2. 비유
- XSS = 내 집 창문에 몰래 장난꾸러기가 심어둔 스프링 장치
- 사용자가 창문을 열면, 몰래 심어둔 장치가 작동해 정보를 훔쳐감
2-3. 실무 예시
- 댓글, 게시판 입력폼에
<script>삽입 - 로그인 정보 탈취, 쿠키 탈취
- 화면 변조, 피싱 페이지 삽입
2-4. 방어 방법
- 입력값 필터링: HTML Escape 처리
- Content Security Policy(CSP) 적용
- 사용자 입력은 절대 신뢰하지 않기
3. CSRF (Cross-Site Request Forgery) – 나도 모르게 명령이 실행되는 상황
3-1. 정의
CSRF는 사용자가 모른 채 공격자가 의도한 요청이 서버로 전송되어 동작하는 공격입니다.
3-2. 비유
- CSRF = 내가 잠든 사이 누군가 내 도어락으로 금고 명령 실행
3-3. 실무 예시
- 로그인 상태인 은행 사이트에서 공격자 링크 클릭 → 계좌 이체
- SNS 좋아요, 게시글 작성 등 사용자 의도와 무관한 행위
3-4. 방어 방법
- CSRF 토큰 사용 (서버 발급 임의 값 검증)
- Referer 체크
- SameSite 쿠키 설정
4. SQL Injection – 금고 비밀번호를 훔쳐보는 공격
4-1. 정의
SQL Injection은 사용자 입력을 통해 데이터베이스 쿼리를 조작해 서버 정보를 탈취하거나 변조하는 공격입니다.
4-2. 비유
- SQL Injection = 금고 비밀번호 입력창에
"123456 OR 1=1"입력 → 금고가 열림
4-3. 실무 예시
- 로그인 폼:
admin' OR '1'='1→ 모든 계정 접근 - 게시판 검색어 입력창 쿼리 조작
4-4. 방어 방법
- Prepared Statement / Parameterized Query 사용
- 입력값 검증 및 필터링
- 최소 권한 원칙 적용
5. 쿠키·세션과 보안 취약점 연결
| 취약점 | 위협 대상 |
|---|---|
| XSS | 쿠키 탈취 가능 |
| CSRF | 세션 악용 가능 |
| SQL Injection | DB 정보 조작 가능 |
즉, 보안 취약점은 사용자 인증과 데이터 안전성을 동시에 위협합니다.
6. 웹 보안 체크리스트 (실무 + 정보처리기사 대비)
| 항목 | 체크 포인트 |
|---|---|
| 입력값 검증 | HTML Escape, 길이/형식 검증 |
| 세션 관리 | 세션ID 난수화, HTTPS 사용 |
| CSRF 방어 | 토큰, SameSite 쿠키 설정 |
| DB 보안 | Prepared Statement, 최소 권한 |
| 외부 링크/스크립트 | 신뢰 가능한 소스만 사용 |
6-1. 입력 값 검증
사용자 입력은 공격자가 마음대로 조작할 수 있습니다. 한마디로 말해 집에 들어오는 사람을 확인하지 않고 모두 허용한다면 모르는 사람이 무슨 짓을 할 지 알 수가 없죠. 통제가 되지 않습니다. 특히 실무에서는 게시판, 댓글, 로그인 폼 입력값에서 <script> 태그나 SQL 명령어 등을 막아야 합니다. HTML Escape를 통해 <를 <로 변환하게 되면 브라우저가 스크립트를 실행하지 않습니다. 이는 길이와 형식을 검증함으로서 불필요한 입력을 차단하는 방법입니다.
6-2. 세션 관리
세션은 로그인 상태 유지용 ID로 웹에서 오랜 시간 활동하지 않고 머무르고 있다가 움직이거나 접속하려고 하면 ‘세선이 만료되어 종료합니다’ 라는 문구가 뜨는 걸 본 적이 있을 겁니다. 공격자가 세션을 훔치면(세션 하이재킹. 25년 1회 정보처리기사 실기 단답형으로 출제) 내 계정으로 로그인 가능하기 때문에 세션 관리는 필수입니다. 세션은 비유하자면 본인의 집 열쇠라고 생각하시면 됩니다. 다른 점이라면 복사 한 사본 열쇠에 조금 더 가깝습니다. 이를 누군가가 가로채어 간다면 문제가 되겠죠. 실무에서는 세션ID를 랜덤하게 생성하고, 브라우저와 서버 간 통신은 HTTPS로 암호화합니다.(이전 시간에 배운 HTTP와 HTTPS의 차이 기억하시죠? 기억이 안난다면?) 세션 만료 시간 설정은 필수입니다.
6-3. CSRF 방어
사용자가 모르게 요청이 실행되는 공격을 방지합니다. 쉽게 비유하자면 모르는 누군가가 내 도어락을 열기 위해 비밀번호를 계속 누른다고 생각하시면 됩니다. 이런 상황을 막기 위해 안전 장치를 설치합니다. 실무에서는 서버가 CSRF 토큰을 발급하고 폼 제출 시 검증하여 SameSite 속성을 통해 다른 사이트에서 내 쿠키를 사용할 수 없게 제한합니다.
6-4. DB보안
공격자가 입력값으로 SQL 명령어를 조작할 수 있습니다. 이해가 쉽도록 비유를 해보자면 모르는 사람이 여러분의 금고에 쉽게 접근하고 또 금고를 열기 위해 비밀번호를 마음대로 눌러보는 상황이라고 보시면 됩니다. 실무에서는 Prepared Statement를 사용하여 입력값이 쿼리로 실행되지 않고 안전하게 처리되도록 합니다. 또한 DB 계정 권한도 최소화하여 혹시 모를 공격 시 피해를 최소화 합니다.
6-5. 외부 링크 / 스크립트
외부 스크립트를 악용하면 사이트가 공격 받을 수 있습니다. 쉽게 비유하자면 외부인이 설치한 장치를 검증하지 않고 허용하면 내 집이 위험해지는 겁니다. 실무에서는 CDN이나 외부 라이브러리를 사용할 때 공식 소스만 사용합니다. 미검증 소스는 절대로 포함을 금지합니다.
7. 핵심 요약
- XSS = 사용자 브라우저에서 실행되는 악성 스크립트
- CSRF = 사용자가 모르게 서버 요청이 실행
- SQL Injection = 입력값으로 DB 조작
- 방어: 입력값 검증 + 토큰/세션 + Prepared Statement
8. 외부 참고 자료
- OWASP – XSS, CSRF, SQL Injection
https://owasp.org/www-community/attacks/xss/
https://owasp.org/www-community/attacks/csrf
https://owasp.org/www-community/attacks/SQL_Injection - MDN – 웹 보안 기초
https://developer.mozilla.org/ko/docs/Web/Security
9. 다음 편 예고
다음 편에서는 웹 서버와 WAS 구조를 다뤄, HTTP/HTTPS, 쿠키·세션·토큰, 그리고 보안 개념을 실제 서비스와 연결합니다.
10. 앞의 내용이 궁금하다면?
[정보처리기사] 필기 실기 통합 이론 제 1편 – 정보와 보안의 모든 것
[정보처리기사] 필기 실기 통합이론 제2편 – 디자인패턴
[정보처리기사] 필기·실기 통합이론 제3편 – IT 신기술 및 전산 용어 총정리
[정보처리기사] 필기·실기 통합 이론 제 4편 – 실무에서 바로 쓰이는 기출전산용어
[정보처리기사] 필기·실기 통합 이론 제 5편 – 기출용어 중 실무에서 자주 쓰이는 고급 전산용어
[정보처리기사] 필기·실기 통합 이론 제 6편 – 기출용어 중 실무에서 자주 쓰이는 네트워크 보안과 데이터 암호화 핵심 정리 (SSL/TLS 포함)
[정보처리기사] 필기·실기 통합 이론 제 7편 – 실무에서 바로 쓰이는 네트워크 구조 완전 정복
[정보처리기사] 제 8편 – TCP/IP 완전 정복 (핵심 개념 + 포트번호 + 계층 역할)
[정보처리기사] 필기 실기 통합 이론 제 9편 – 웹 통신 완전 정복(HTTP, HTTPS, 쿠키, 세션, 토큰)