[SK shieldus Rookies 19기][애플리케이션 보안] DOM XSS (DOM 기반 크로스 사이트 스크립트)

Sungwuk·2024년 3월 31일
0

XSS: Cross-Site Scripting란?

웹 페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도할 수 있다. 예를 들어, 검증되지 않은 외부 입력이 동적 웹페이지 생성에 사용될 경우, 전송된 동적 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보유출 등의 공경을 유발할 수 있다.

DOM 기반 XSS 공격은 보안에 취약한 JavaScript 코드로 DOM 객체를 제어

DOM 객체란?

DOM (문서 객체 모델)이란? 문서 객체 모델, 즉 DOM은 웹 페이지(HTML이나 XML 문서)의 콘텐츠 및 구조, 그리고 스타일 요소를 구조화 시켜 표현하여 프로그래밍 언어가 해당 문서에 접근하여 읽고 조작할 수 있도록 API를 제공하는 일종의 인터페이스

취약한 HTML 예)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script>
	const hash = window.location.hash.slice(1)
	if (hash) {
		document.write("<h1>" + decodeURIComponent(hash) + "</h1>");
	} else {
		document.write("<h1>메시지가 없습니다.")
	}
</script>
</head>
<body> 
</body>
</html>

뒤에 #공격자가유도하는페이지 작성할 수 있다.

또한 스크립트코드가 공격할 수 있다.

방어기법

입력값에 브라우저가 실행할 수 있는 코드가 있는지 확인

  • 오류 처리
  • 제거 후 사용
  • 안전한 문자로 대체해서 사용 (HTML 인코딩 처리)

출력값에 의도하지 않은 실행 가능한 코드가 포함되어 있는지 확인

  • 제거 후 출력
  • 안전한 문자로 대체해서 사용 ⇒ HTML 인코딩해서 출력

필터링, 인코딩 작업을 수행할 때는 검증된 로직, 라이브러리, 프레임워크를 사용해서 구현

https://cheatsheetseries.owasp.org/cheatsheets/XSS_Filter_Evasion_Cheat_Sheet.html

OWASP에서 재공하는 라이브러리를 참고하자

profile
https://github.com/John-Jung

0개의 댓글

관련 채용 정보