'xss'에 해당되는 글 1건

  1. 2008.06.29 Cross Site Scripting 이란...?

 XSS ( Cross Site Scripting ) 는 다양한 해킹의 방법 중 최근에 가장 이슈가 되고 있는 공격방법이다. 악의적인 사용자가 만든 동적으로 생성되는 웹페이지에서 악의적인 HTML 태그나 스크립트가 포함될 수 있다. XSS 는 웹 어플리케이션에 클라이언트로부터 악의적인 데이터를 받아 들일 때에 발생할 수 있다. 이렇게 받아들여진 데이터는 다른 클라이언트가 그 페이지에 접근할 경우에 전달 되게 되고, 이 클라이언트는 정상적인 데이터로 인식하고 그 내용을 interpret 하게 된다. 즉, 웹 어플리케이션을 매개로 하여 다른 사용자의 브라우저에서 스크립트 실행이 가능해 지는 것이다. 결과적으로 DOM( Document Object Model ) security restrictions 을 건너 뛰어 명령 실행이 가능해 지게 되는 것이다.

다음 예를 보자. 철수는 XSS 공격 방법을 이용하여 메일 서버를 통해 영희에게 악성코드가 첨부된 메일을 발송한다. 메일에 포함된 악성 스크립트 코드에 의해 영희가 메일을 읽는 순간 영희의 쿠키 정보가 철수에게 전달된다. 이렇게 되어 철수는 영희의 쿠키값을 간단히 조작하여 영희의 메일을 읽을 수 있게 되는 것이다.

XSS에는 두 가지 유형이 존재한다.

하나는 client-to-client 방식이다. 한 클라이언트에서 다른 클라이언트로 악의적인 코드가 전달되는 것이다. 게시판에 글을 쓴다든지 하는 방식으로 악의적인 코드를 전달할 수 있다.

또 하나는 client-to-itself 방식이다. 악의적인 코드가 공격 대상이 되는 클라이언트 자신이 보내서 자신이 되돌려 받는 유형이다. 이러한 형태의 공격은 주로 이메일이나 웹페이지를 통해서 링크를 제시하고 사용자가 그러한 링크를 클릭을 유도하는 방식으로 이루어진다.

이러한 경우에 대해 XSS 공격을 방어하는 가장 좋은 방법은 어플리케이션이 모든 header 들, cookie, query string, form field, hidden field 등에 대해 유효성 검사를 실시하는 것이다.

이러한 방식의 공격을 방어하기 위해 ASP, JSP, PHP 등의 웹 언어들은 간단한 방어기법을 제공하는데 다음은 JSP 의 예이다. HTML코드의 시작을 알리는 ‘<’ 에 대해서 &lt; 으로 변환시킨다.

/% less than (<) character 를 &lt; 으로 변환시킵니다. %/

String userInput = request.getParameter(“keyword”);

user_input = user_input.replaceAll(“’”, “\’”);

 

무엇보다 중요한 것은 개발자가 보안에 대한 경각심을 가지고 프로그래밍을 할 때에 조금 귀찮은 부분이라도 위와 같은 처리를 해줌으로써 공격에 대응할 수 있도록 하는 것이다.



 

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요