[네트워크] XSS & CSRF & SQL Injection

2025. 3. 28. 16:13·⚙️ CS/네트워크
반응형

✅ 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
'⚙️ CS/네트워크' 카테고리의 다른 글
  • [네트워크] IP 주소 & 서브넷
  • [네트워크] UDP/TCP
  • [네트워크] HTTP 상태유지 기술
  • [네트워크] DNS(Domain Name System Servers)
dev-heyjin
dev-heyjin
  • dev-heyjin
    개발 기록
    dev-heyjin
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • 🎯 Programming (8)
      • 💪 Algorithm (16)
      • ⚙️ CS (31)
        • 네트워크 (15)
        • 운영체제 (15)
        • 데이터베이스 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    RDS
    해킹
    DB
    데이터베이스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev-heyjin
[네트워크] XSS & CSRF & SQL Injection
상단으로

티스토리툴바