XSS 공격
Cross Site Scripting의 약어입니다. CSS가 맞는 줄임이겠지만, 이미 스타일시트로 보편화되어 사용되고 있는 CSS가 있지요.
그래서 CSS가 아니라 XSS로 줄여서 말합니다.
XSS 공격은 DOM에 악성 자바스크립트 코드를 삽입하여 공격하는 기법입니다.
입력창에서 이렇게 스크립트를 삽입할 수 있습니다.
<input type="text" id="name" />
<button onclick="displayMessage()">Submit</button>
<div id="message"></div>
function displayMessage() {
var name = document.getElementById('name').value;
document.getElementById('message').innerHTML = 'Welcome, ' + name + '!';
}
공격의 예시
코드를 삽입해 어떤 공격을 할 수 있을까요?
- 사용자의 쿠키를 탈취하는 스크립트
로그인을 구현하다 보면 쿠키에 사용자 정보가 담겨 있을 수 있습니다.
- 악성 파일이 있는 곳으로 리다이렉트
버튼이나 이미지 등을 삽입하여 악성파일이 있는 곳으로 유도할 수도 있습니다.
이 외에도 XSS 공격 기법을 이용해 사용자에게 다양한 공격을 할 수 있습니다.
XSS 공격 방지
위의 예시로 보면 사용자가 입력할 때 처리가 필요해 보입니다.
HTML 태그나 특수문자가 입력되지 않도록 유효성 검사를 하거나, 삽입되기 전에 인코딩을 해야 합니다.
사용자는 <script>를 입력창에 작성하지만, 삽입할 때 <같은 태그를 >, >는 <로 변환해줍니다.
그러면 DOM에는 >script<
로 작성되어서, 스크립트가 실행되지 않겠지요.
그리고 innerHTML 메소드 사용을 지양해야 합니다.
위의 예시들처럼 직접 DOM 조작이 가능해지기 때문입니다.
'Javascript' 카테고리의 다른 글
프로퍼티의 게터와 세터 (0) | 2023.04.12 |
---|---|
자바스크립트 객체 정의와 생성 방법, 프로퍼티 (0) | 2023.03.29 |
Javascript 객체 복제 Object.assign 요약과 React 적용 (0) | 2021.11.22 |
Javascript 계산기 만들기 (0) | 2020.05.10 |
Javascript 실시간 시계 만들기 (0) | 2020.04.28 |