Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 하이브리드접근법
- STOMP
- XSS
- Java
- JPA
- 오블완
- QA
- 테스트케이스
- 메소드
- 헥사고날아키텍처
- N+1문제
- 스프링시큐리티
- Kafka
- 자동화워크플로우
- 프로세스와스레드의차이
- 부트캠프
- 캐시의 작동 원리
- 오버로딩
- 프로토콜역할
- springboot
- 한화시스템부트캠프
- nplus1
- 자료구조
- 티스토리챌린지
- selenium
- n8n
- 엘라스틱서치
- 자바
- jwt토큰
- kafka배포
Archives
- Today
- Total
아쿠의 개발 일지
XSS와 CSRF: 웹 보안의 주요 위협과 방어 방법 본문
웹 애플리케이션이 발전하면서 다양한 기능이 추가 되었지만, 동시에 보안 위협도 증가하고 있습니다.
그중에서도 특히 XSS(Cross-Site Scripting) 와 CSRF(Cross-Site Request Forgery)는 흔히 발생하는 취약점으로 꼽힙니다. 이번 글에서는 XSS와 CSRF의 작동 원리와 이를 방어하기 위한 방법을 알아보겠습니다.
1. XSS (Cross-Site Scripting)
XSS란?
XSS는 공격자가 악의적인 스크립트를 웹 페이지에 삽입하여, 이를 방문하는 사용자의 브라우저에서 실행되게 만드는 공격입니다. 주로 JavaScript를 활용하며, 사용자의 세션 쿠키를 훔치거나 악성 사이트로 리다이렉트시키는 데 사용됩니다.
XSS의 유형
- Stored XSS
- 공격 스크립트가 데이터베이스에 저장되었다가 페이지를 로드할 때 실행됩니다.
- 예: 블로그 댓글, 사용자 프로필에 악성 스크립트 삽입.
- Reflected XSS
- 공격 스크립트가 URL 또는 입력 값에 포함되어, 요청과 함께 서버에 전달된 후 브라우저에서 즉시 실행됩니다.
- 예: 검색 결과 페이지에 입력 값을 그대로 출력하는 경우.
- DOM-based XSS
- 클라이언트 측에서 DOM 조작을 통해 발생하는 공격입니다.
- 예: JavaScript에서 URL 파라미터를 DOM에 삽입할 때 검증이 부족한 경우.
XSS 방어 방법
- 입력 검증(Input Validation): 사용자 입력을 철저히 검증하고, 허용된 값만 처리합니다.
- 출력 인코딩(Output Encoding): HTML, JavaScript, URL 등에 적합한 인코딩을 사용하여 스크립트 실행을 방지합니다.
- Content Security Policy (CSP): 브라우저가 특정 소스에서만 스크립트를 실행하도록 제한합니다.
- HTTPOnly 쿠키: JavaScript에서 쿠키 접근을 차단하여 세션 탈취를 막습니다.
2. CSRF (Cross-Site Request Forgery)
CSRF란?
CSRF는 사용자가 신뢰하는 사이트를 대상으로 공격자가 악의적인 요청을 위조하여 서버가 이를 처리하게 만드는 공격입니다. 사용자가 인증된 상태를 악용하여 비정상적인 동작을 수행합니다.
CSRF의 작동 방식
- 사용자가 웹사이트에 로그인한 상태에서 인증 쿠키가 브라우저에 저장됩니다.
- 공격자가 악의적인 링크나 폼을 통해 사용자를 속여 요청을 보냅니다.
- 브라우저는 자동으로 인증 쿠키를 포함하여 요청을 전송합니다.
- 서버는 요청이 사용자의 의도인지 확인하지 않고 처리합니다.
CSRF 공격 예제
- 사용자가 공격자의 이메일에 포함된 링크를 클릭하여, 자신의 계좌에서 공격자의 계좌로 돈을 송금하는 경우.
- 공격자가 조작한 HTML 폼을 사용하여, 사용자의 계정 설정을 변경하는 경우.
CSRF 방어 방법
- CSRF 토큰 사용: 서버가 클라이언트에게 CSRF 방지 토큰을 제공하고, 요청 시 이를 검증합니다.
- Referer 헤더 검증: 요청이 올바른 출처에서 왔는지 확인합니다.
- SameSite 쿠키 속성: 쿠키가 동일한 출처에서만 사용되도록 설정합니다.
- SameSite=Strict 또는 SameSite=Lax로 설정.
- 사용자 확인: 중요한 작업(예: 계좌 송금) 전에 추가 인증(예: 비밀번호 재입력)을 요구합니다.
3. XSS와 CSRF의 차이점
대상 | 사용자 | 서버 |
공격 방법 | 악성 스크립트를 브라우저에서 실행 | 신뢰된 사용자의 권한을 악용 |
피해 범위 | 사용자 데이터 탈취, 계정 하이재킹 | 서버에 비정상적인 요청 수행 |
방어 방법 | 입력 검증, CSP, HTTPOnly 쿠키 | CSRF 토큰, Referer 검증, SameSite 쿠키 |
XSS와 CSRF는 각각 사용자와 서버를 대상으로 하는 대표적은 웹 보안 취약점입니다. 두 공격 모두 예방하려면 철저한 입력 검증, 적절한 보안 헤더 설정, 추가 인증 절차 등을 통해 방어해야 합니다.
보안은 개발 초기부터 설계에 포함되어야 하며, 지속적인 점검과 테스트를 통해 강화할 수 있습니다.
728x90
'Programming > CS' 카테고리의 다른 글
프로토콜(Protocol)의 역할과 종류 (0) | 2025.01.22 |
---|---|
클라우드 및 인프라: AWS, Azure, Google Cloud와 가상화의 이해 (1) | 2025.01.21 |
CPU 캐시의 작동 원리와 성능 최적화 (0) | 2025.01.17 |
로드 밸런서의(Load Balancer) 원리와 구현: 트래픽 분산의 핵심 기술 (0) | 2025.01.16 |
애플리케이션 설계란? (아키텍처 설계 ~ 설계 원칙) (0) | 2025.01.15 |