Backend

[보안] XSS(Cross-Site Scripting)에 대하여

김콩콩쥐 2022. 6. 11. 18:12

XSS(Cross-Site Scripting)는 무엇인가?

- 사이트 간 스크립팅은 웹 애플리케이션이서 많이 나타나는 취약점의 하나이다.

- 웹사이트 관리자가 아닌 사람이 사용자를 대상으로 웹 페이지에 악성 스크립트를 삽입할 수 있다.

 

 

왜 위험한데?

- 스크립트에 따라 쿠키나 세션 토큰 등을 탈취할 수 있어서

인증이나 세션관리에 사용되는 사이트에 침입하거나 피해를 입힐 가능성이 있다.

 

 

XSS의 예시

// HTML
<input id='input'></input>
<button id='input-btn'>submit</button>

<div id='submitted-input'></div>



// script
document.querySelector('#input-btn').addEventListener("click", (e) => {
	const userInput = document.querySelector('#input').value
    
    document.querySelector('#submitted-input').innerHTML = userInput
})

위의 input값에 <img src="#" onerror="console.log('XSS')">와 같은 스크립트 코드를 입력할 경우

콘솔창에 XSS 문구가 출력된다.

 

 

XSS 방지 방법

- 위의 예시 같은 경우는 사용자로부터 입력 받은 값을 제대로 검사하지 않을 경우 나타난다.

- XSS 공격은 스크립트를 삽입하는 방식으로 발생하기 때문에 스크립트 태그를 사용한다.

- 스크립트 태그에 자주 사용되는 '<', '>'등의 문자를 필터링 해주는 방식으로도 방어가 가능하다.

 

 

출처 - https://tecoble.techcourse.co.kr/post/2021-04-26-cross-site-scripting/