반응형
✅ XSS (Cross Site Scripting)
: 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입하는 공격
웹 애플리케이션이 사용자로부터 입력받은 값을 제대로 검사하지 않고 사용할 경우 나타난다.
📍 위험성
- 세션 하이재킹: 사용자의 세션 쿠키를 탈취하여 사용자인 것처럼 가장할 수 있다.
- 피싱 유도: 사용자를 피싱 사이트로 리다이렉트(Redirect)하여 정보를 민감 정보를 입력하도록 유도한다.
- 브라우저 익스플로잇: 브라우저의 취약점을 이용해 악성 코드 설치 및 실행가 가능하다.
📍 방어법
- 입력값 검증: 사용자 입력값에 스크립트나 HTML 태그가 포함되지 않도록 제한한다.
- 특수 문자 이스케이프: `<, >, &` 등 태그로 해석될 수 있는 문자를 정규표현식이나 이스케이프 함수를 이용해 필터링한다.
- HTTPOnly 쿠키 설정: 세션 쿠키에 HttpOnly 옵션을 설정하여 자바스크립트를 통한 쿠키 접근을 차단한다.
✅ CSRF (Cross Site Request Forgery)
: 인증된 사용자의 권한으로 원치 않는 요청을 보내는 공격
사용자가 현재 로그인한 세션을 이용하여 악의적인 요청이 서버에 전달되도록 유도한다.
📍공격 조건
- 사용자가 보안이 취약한 서버로부터 이미 인증을 받은 상태여야 함
- 쿠키 기반으로 세션 정보 획득 가능해야 함
- 공격자는 서버를 공격하기 위한 요청 방법에 대해 미리 파악하고 있어야 함
📍 방어법
- Referrer 검증: 수신된 HTTP 요청의 Referer 헤더를 확인해 요청이 신뢰할 수 있는 출처에서 왔는지 확인한다.
- Security Token 사용: 중요한 요청에 대해 서버가 발급한 고유 토큰을 함께 전송하도록 하여 요청의 정당성을 검증한다.
✅ XSS vs. CSRF
| 구분 | XSS | CSRF |
| 발생 원인 | 클라이언트가 웹 서버를 신뢰하여 발생 | 웹 서버가 클라이언트를 신뢰하여 발생 |
| 공격 대상 | 클라이언트 (브라우저) | 서버 |
| 공격 목적 | 쿠키/세션 탈취, 악성 사이트로 리다이렉트 등 | 권한 도용, 권한 상승 등 서버에서 행위 유도 |
| 공격 행위 | 악성 스크립트를 웹 페이지에 삽입하고 실행을 유도 | 사용자의 인증 상태를 이용해 원하지 않는 요청 실행 |
✅ SQL Injection
: 악의적인 SQL 코드를 입력하여 데이터베이스를 조작하는 공격
제대로 검증되지 않은 입력값을 통해 공격자가 데이터 조회, 수정, 삭제, 계정 탈취 등 다양한 행위를 수행할 수 있다.
📍 방어법
- 입력값 검증: 사용자 입력값에 대해 길이, 형식, 허용 문자 등을 명확히 검증하여 악의적인 코드 삽입을 방지한다.
- Prepared Statement 사용: 동적 SQL 대신 PreparedStatement, Parameterized Query를 사용하여 입력값을 SQL과 분리한다.
- 저장 프로시저 사용: 미리 정의된 쿼리만 실행하도록 하는 저장 프로시저로 쿼리의 구조를 고정시킨다.
- DB 권한 최소화: 애플리케이션에서 사용하는 DB 계정에 최소한의 권한만 부여하여 공격 시 피해를 줄인다.
✨ 추가 질문
[ XSS는 프론트엔드에서만 막을 수 있나요? ]
XSS는 프론트엔드뿐만이 아니라 백엔드에서도 방어할 수 있다.
결국 프론트엔드든 백엔드든 사용자 입력 값을 전처리하여 방어할 수 있다.
백엔드의 경우, Java의 Lucy-XSS-Filter와 같은 라이브러리를 사용하거나, 스프링은 Spring Security에서 제공하는 X-XSS-Protection 헤더를 사용할 수도 있다.
반응형
'⚙️ CS > 네트워크' 카테고리의 다른 글
| [네트워크] IP 주소 & 서브넷 (1) | 2025.04.10 |
|---|---|
| [네트워크] UDP/TCP (0) | 2025.04.03 |
| [네트워크] HTTP 상태유지 기술 (2) | 2025.03.28 |
| [네트워크] DNS(Domain Name System Servers) (1) | 2025.03.20 |