XSS(크로스 사이트 스크립팅)
- 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점
- 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태
1) XSS 유형
Reflected XSS
- HTTP 쿼리 매개 변수 (예 : HTML 양식 제출)에서 적절하지 않고, 구문 분석 및 해당 사용자에 대한 결과의 페이지를 표시
- URL 파라미터나 HTTP 요청 헤더 정보를 수정하여 공격
Stored XSS
- 공격자가 제공 한 데이터가 서버에 저장 된 다음 지속적으로 서비스를 제공하는 정상 페이지에서 다른 사용자에게 노출
- HTML 형식의 메시지를 게시 할 수 있는 온라인 게시판
2) XSS 공격구문
<script>alert(document.cookie)</script>
<a href="javascript:alert('XSS')">XSS</a>
<img src="#" onerror="alert('XSS')">
<ruby oncopy="alert('XSS')">XSS</ruby>
3) XSS 대응방안
- 입력값, 출력값 필터링
- replace를 이용한 치환시, "" 보다 " "(스페이스)로 변경한다.
- html 태그를 html entity로 변경하여 실행되지 않도록 한다.
ex) < lt; >gt;
- html 태그가 필요한 경우, whitelist, blacklist, 라이브러리 사용
- 라이브러리 : OWASP Antisamy, NAVER Lucy XSS Filter
출처: https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85
https://namu.wiki/w/XSS