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/