웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > etc

xss 해킹 공격 방법 및 예제보기

Last Modified : 2020-12-23 / Created : 2017-05-04
5,425
View Count
웹사이트에서 스크립트 언어를 사용하는 해킹 방법 중 하나인 xss(cross-site scripting) 해킹 공격 방법과 예제에 대하여 알아봅니다.



# XSS란?


XSS는 크로스 사이트 스크립팅(Cross Site Scripting)의 약자입니다. 즉 웹사이트에 방문 후 스크립트를 내부에서 실행하게 하는 해킹 방법, 공격을 의미합니다.

방법 중 하나를 예로 들어봅니다. 웹사이트에 검색어를 입력하는 폼이 있다고 생각해보겠습니다. 일반적으로 검색폼에는 SQL injection 등의 쿼리 입력 방법의 해킹 방법이 사용되지만 이럼 입력폼에 스크립트를 동작시키는 것 역시 XSS의 공격 방법 중 하나이기도합니다.

예를들어 입력폼에 다음의 스크립트를 입력해봅니다. 
<script>alert();</scritp>

일반적인 경우라면 코드가 동작하지 않겠죠. 하지만 경우에 따라서 코드가 동작할 수도 있습니다. 내부 코드가 어떻게 동작하는지에 따라 XSS의 공격 취약점이 될 수도 있겠죠.


! XSS를 방지하려면?

방법은?
웹사이트에 여러 테스트를 거쳐 서비스 운영 이 전에 위험을 벗어나는 것이 가장 필요하겠죠. 코드를 작성하는 단계에서도 입력된 키워드를 그대로 사용하지 않고 특수문자를 제거하거나 특수문자가 포함된 경우 이를 실행시키지 않는 방법이 필요합니다. 태그를 조작하거나 쿼리 동작 코드는 거의 특수문자를 필요로하기 때문이죠. 즉 간단하게 정규식만 사용하여 특수문자를 제거하더라도 많은 위험에서 벗어날 수 있습니다.


! 브라우저의 해킹 감지


만약 XSS의 방법을 브라우저에서 시도할 경우 아래와 같이 에러가 발생할 수 있습니다. 크롬 브라우저의 XSS ERROR입니다.

여기서 중요한 것은 단순 에러가 아닌 ERR_BLOCKED_BY_XSS_AUDITOR라고 XSS의 접근을 예측하여 보여준다는 점입니다.


! 마치면서


react, angularjs, vue 등의 많이 사용되는 프론트엔드 프레임워크에서도 이런 XSS의 위험성을 줄이기 위해서 코드에 직접 DOM, html을 생성하지 못하도록 되어있습니다. 예를들어 react의 경우 dangerouslySetInnerHTML를 사용하도록 하는데 이런 부분들 역시 XSS를 벗어나기 위한 하나의 과정입니다.

여기까지 XSS, 크로스사이트 스크립트에서 대하여 간략하게 알아보았습니다.

Previous

web parameter tampering 해킹 방법

Previous

PHP에서 특수문자를 찾거나 바꾸는 정규표현식 방법은?