본문 바로가기
php개발자(백엔드) /PHP 보안

크로스 사이트 스크립팅(XSS)

by 장김치 2017. 1. 31.

[크로스 사이트 스크립팅(XSS)]



1.정의 : 

가. 사용자가 입력한 정보를 출력할 때 스크립트가 실행되도록 하는 공격기법이다. 

다른 사이트로 어떤 정보를 전송하는 행위가 주로 일어나기 때문에 사이트간 스크립팅이라는 이름을 가지고 있다. [출처 : https://opentutorials.org/course/692/3961 ]


나. 애플리케이션에서 브라우저로 전송하는 페이지에서 사용자가 입력하는 데이터를 검증하지 않거나, 

출력 시 위험 데이터를 무효화 시키지 않을 때 발생한다 [출처 : OWASP]




2. 공격 종류

가. 저장 XSS 공격 : 게시판 같은 곳에서 사용자 입력 폼에 악성 스크립트 태그를 포함하여 게시글을 서버에 업로드 시켜놓고 다른사용자가 페이지를 읽는 순간 브라우저를 공격하는 방식

 

나. 반사 XSS 공격 : 서버가 외부에서 입력받은 값을 받은 후 브라우저에 전송하는 과정에서 사용된 변수안에 가공된 변수의 값(악성 스크립트)을 넣어 서버가 제대로된 값을 가져오지 않고 악성 스크립트가 브라우저에서 실행이 된다. 

ex) http://www.test.com/test/key=<script>alert(document.cookie)</script>&name=0


다. DOM기반 XSS 공격 : DOM이란 html 및 xml 문서를 처리하는 API로 문서의 구조적 형태를 제공하므로 자바스크립트(JavaScript)와 같은 스크립트 언어를 사용하여 문서 내용과 시각적 표현을 수정할 수 있다. 서버와 관계없이 브라우저에서 발생하는건데 조작된 URL을 사용자에게 전송하면 사용자는 이 URL을 클릭하는 순간 공격을 입는다. 




3. XSS 예방

가. 입출력값 검증 및 무효화 : XSS공격은 기본적으로 <script> 태그를 사용하기 때문에 XSS 공격을 차단하기 위해 태그문자등이 입력되었을때 htmlentities()로 필터링 하고, 서버에서 브라우저로 전송시 문자를 인코딩 한다. -> 브라우저에서는 일반문자로 인식하여 출력한다. 

'php개발자(백엔드) > PHP 보안' 카테고리의 다른 글

XSS와 CSRF 방지 모듈 개발-1  (1) 2017.02.02
CSRF 기초  (0) 2017.02.02
PHP 보안 - 서론  (0) 2017.01.23