XSS 대응방법 추가 & Input태그 XSS

황인환·2024년 6월 30일

Input 태그 XSS

<input>태그 안에 입력값을 받는 경우
1. ">를 이용하여 input 태그 탈출후 다른 태그 사용
2. Event Handler 사용
ex) onload, onclick, onmouseover
- onmouseover: 커서가 해당 태그위에 올라가면 실행
-- ex) <input type = "text">
- onfocus: 커서가 브라우저안에 들어오면 실행
- autofocus: 커서가 자동으로 브라우저 안에 들어옴
-- ex) <input type = "text" autofocus="alert(1)">

XSS 대응방안

- HTML Entity

1.보통의 경우

HTML Entity
HTML 특수문자 < ' " >를 치환시킴
우회법: DOMbased XSS 입력값이 script안에 있으면 script 삽입
ex) let data = "__" __ <- 입력받는곳
"; alert(1); let a = " <-입력받는 곳에 대입
";앞에 스크립트 완성
alert(1)내가 심고 싶은 코드
let a = " 뒤에 스크립트 완성
-> 스크립트가 미완성일 경우 스크립트가 실행되지 않음

2.치환이 불가능한 경우

--> HTML Editor환경에서는 HTML Entity가 불가능
--> 따라서 꼭 필요한 경우가 아니라면 보통은 삭제를 추천

HTML Editor 환경일 경우
1. 파라미터(사용자 입력)에서 HTML 특수 문자들을 전부 HTML Entity로 치환
ex) <img> -> &lt; img &gt;
2. 허용해줄 tag 식별 -> 그 태그를 다시 기능하도록 바꿈
ex) &lt; img &gt;, &lt; a &gt; 등 이렇게 치환된 tag를 식별하여 <img>, <a>태그로 다시 살림
3. 다시 치환한 tag내 악의적인 Eevent handler 블랙리스트 기반 필터링
ex) <img> 태그내 src 허용 onerror필터링

- Filtering

1. White List Filtering

--> 기능 : 특정단어만 받아드림
--> 한계 : 모든 곳에 Filtering을 해버리면 의미가 없어지는 곳도 있음 ex)게시판

2. Black List Filtering

--> 기능 : 특정단어만 Filtering함
--> 한계 : 우회가능성이 존재함
--> 종류

글자수 제한
기능: 스크립트를 입력하기 힘들게 글자수 자체를 제한
우회법: <script src ="">를 이용해 외부에서 가져옴
단어 제한
기능: 특정단어를 Filtering함
우회법:
1. 대소문자를 섞음 ex) <script>-><ScRIpT>
2. 다른 태그 사용 ex) <a>, <img>, <input>

--Normaltic Study 11주차--

0개의 댓글