Reflected XSS 대응 방안

누군가·2024년 2월 17일
0

XSS 대응 방안

목록 보기
3/5

Reflected XSS 대응 방안

  • 해당 문서에서는 Reflected XSS 대응 방안에 대해 기술합니다.

공격 방법

  • 검색 페이지에 스크립트를 입력을 통한 공격 방법입니다.
  • 임의의 검색 페이지를 생성하여 공격 방법에 대해 설명하겠습니다.

  • 해당 페이지는 검색어 입력 후 검색 버튼을 누르면 쿼리 스트링에 키워드 (검색어)가 추가되며,
    입력된 검색어에 해당 검색어가 노출됩니다.

  • “안녕”이라고 검색할 경우 URL에 쿼리 스트링이 /reflected?keyword=안녕 형식으로 추가되는 구조입니다.
  • 검색어에 스크립트 코드를 작성합니다.
# 스크립트 예시
<script>alert("안녕")</script>

-> alert로 "안녕"이라는 문구를 띄우는 스크립트

  • 스크립트 코드가 포함된 검색어를 검색합니다.

  • 이와 같이 keyword 쿼리 스트링에 스크립트가 포함되어 스크립트가 실행되며 alert 창이 발생합니다.

방어 방법

  • Reflected XSS의 방어 방법에 대한 내용입니다.

1) 입력 값 제한

  • 브라우저에서 사용자 입력 시 특수 문자를 제한합니다.
    • 정규식을 활용하여 “한글”, “영어”, “숫자”, “공백”만 허용하여 스크립트가 입력되지 않을 수 있도록 제한합니다.
  • XSS 공격 의도가 아닌 단순 검색을 위한 특수 문자를 입력할 수 없다는 단점이 있습니다.

2) 입력 값 치환

  • 악성 스크립트를 만들 수 있는 특수 문자를 치환할 수 있는 필터를 적용합니다.
ASCII 문자참조 문자ASCII 문자참조 문자
&&"
<<'
>>//
(())

3) 직접 출력 금지

  • 사용자의 입력을 그대로 출력하는 일은 위험하므로 라이브러리의 출력 함수를 사용합니다.
    • 예, JSTL의 <c:out />

소스코드

Reference

https://junhyunny.github.io/information/security/spring-mvc/reflected-cross-site-scripting/

profile
개발 중에 알게된 내용을 공유합니다 (나도 기억할겸)

0개의 댓글