교차 사이트 스크립팅 보안 문제를 방지하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 252985 - 이 문서가 적용되는 제품 보기.
알림
이 문서에서는 Windows 2000 적용됩니다. 2010 7월 13일, Windows 2000 지원 끝납니다.Windows 2000 End-of-Support Solution Center Windows 2000에서 마이그레이션 전략 계획 수립 시작 지점입니다. 자세한 내용은 Microsoft Support Lifecycle Policy 을 참조하십시오.
모두 확대 | 모두 축소

이 페이지에서

요약

동적으로 생성된 HTML 페이지에 방식에 또는 out 방법은 두 입력 내용의 유효성이 경우 보안 위험이 생길 수도 있습니다. 웹 페이지에서 제출 및 브라우저의 신뢰할 수 있는 소스에서 발생하는 것으로 보이는 입력 내에서 악의적인 스크립트를 포함할 수 있습니다. 이 문제는 사이트 간 스크립팅 보안 문제로 이라고 합니다. 교차 사이트 스크립팅 보안 문제, 결과가, 및 예방 설명합니다.

추가 정보

문제

많은 웹 페이지는 유효성이 검사되는 입력 표시할 기본 문제입니다. 입력의 유효성을 검사하는 경우 내에서 입력은 악의적인 스크립트를 포함할 수 있습니다. 서버 쪽 스크립트에서 다음 확인되지 않은 입력이 이 표시되는 경우 신뢰할 수 있는 사이트가 생성된 것처럼 브라우저에서 스크립트를 실행합니다.

결과

동적 웹 페이지에 대한 입력을 확인할 경우 다음 문제가 발생할 수 있습니다.
  • 데이터 무결성이 손상될 수 있습니다.
  • 쿠키는 설정하고 읽을 수 있습니다.
  • 사용자 입력을 가로챌 수 있습니다.
  • 신뢰할 수 있는 소스 컨텍스트가 클라이언트가 악의적인 스크립트는 실행할 수 있습니다.
웹 페이지를 위험이 있습니까? 기본적으로 문제를 확인하지 않은 입력을 기반으로 동적 페이지 생성을 영향을 줍니다. 다음과 같은 유형의 웹 페이지에 일반적인 예입니다.
  • 반환할 결과 페이지의 검색 엔진은 사용자가 입력한 내용에 따라.
  • 사용자 계정 데이터베이스, 쿠키 등에 있는 저장하고 나중에 사용자 이름을 클라이언트에 쓰는 로그인 페이지
  • 신용 카드 정보를 처리하는 웹 양식

예방

이 섹션에는 사이트 간 스크립팅 보안 공격을 방지하는 몇 가지 방법이 있습니다. 어떤 기술을 가장 적합한 확인하려면 상황에 평가하십시오. 모든 기술을 사용하면 입력 및 신뢰할 수 있는 스크립트가 받는 데이터의 유효성이 있습니다 합니다. 기본적으로 입력 해당 루틴에 온전성 검사를 실행하여 좋은 코딩 따라 방지가 의미합니다.

사이트 간 스크립팅 공격을 방지하려면 일반적인 접근 방법을 목록입니다.
  • 입력된 매개 변수를 기반으로 출력을 인코딩하십시오.
  • 입력된 매개 변수에 대한 특수 문자 필터링하십시오.
  • 특수 문자의 입력된 매개 변수에 따라 출력 필터.
필터 또는 인코딩할 때 해당 특수 문자에 대해 필터를 확인하는 확인하기 위해 웹 페이지를 설정할 문자를 지정해야 합니다. 웹 페이지에 삽입된 데이터를 필터링하여 특정 문자 집합을 기반으로 특수 간주되는 바이트 시퀀스가 합니다. 많이 사용되는 문자 집합을 ISO 8859-1 있는 초기 버전의 HTML 및 HTTP 기본 것입니다. 이러한 매개 변수를 변경할 때 계정 지역화 문제를 고려해야 합니다.

특수 문자의 입력된 매개 변수에 따라 출력 인코딩

사용자가 해당 HTML로 쓰는 경우 입력으로 받은 데이터를 인코딩하십시오. 데이터 입력 중에 어떤 이유로 확인하지 못했습니다 이 기술은 효과적입니다. URLEncodeHTMLEncode 같은 기술을 사용하여 악의적인 스크립트가 실행되지 않을 수 있습니다.

다음 코드 조각에서는 URLEncodeHTMLEncode ASP (Active Server Pages) 페이지를 사용하는 방법을 보여 주는:
<%
      var BaseURL = http://www.mysite.com/search2.asp?searchagain=;
      Response.write("<a href=\"" + BaseUrl +
      Server.URLEncode(Request.QueryString("SearchString")) +
      "\">click-me</a>");
%>
<% Response.Write("Hello visitor <I>" +
      Server.HTMLEncode(Request.Form("UserName")) +
      "</I>");
%>
				
경우 HTML 및 URL 인코딩 코드 페이지 데이터를 필터링할 때와 마찬가지로 지정해야 할 수도 있습니다.

문자열에 대해 HTMLEncode 호출하면에 대한 실행될 수 있는 스크립트를 표시할 수 없습니다 있습니다 중요한 및 따라서 문제를 방지합니다.

특수 문자 입력된 매개 변수를 필터링합니다

사용자 입력 또는 일부 특수 문자를 제거하여 필터링 입력을 사용할 수 있습니다. 특수 문자를 HTML 스트림 내에 생성된 스크립트를 문자입니다. 다음을 포함한 특수 문자:
< > " ' % ; ) ( & + -
				
메모 추가 문자 또는 특수 문자 초과하는 문자열을 필터링하는 개별 상황에 필요할 수 있습니다.

필터링이 효과적인 방법은 될 수 있지만 몇 가지 주의 사항이 있습니다.
  • 필터링 일부 입력 맞지 않을 수 있습니다. 예를 들어, HTML 폼에서 <text>입력을 받고 있는 시나리오에서는 사용자가 대신 인코딩 (아래 참조) 와 같은 메서드를 선택할 수 있습니다.
  • 필터링된 일부 문자는 실제로 필요한 서버 쪽 스크립트 입력을 수 있습니다.
다음 샘플에서는 필터를 JavaScript에서 작성된 특수 문자를 제거하는 방법을 보여 줍니다:
function RemoveBad(strTemp) { 
    strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
    return strTemp;
} 
				
다음 코드는 나중에 사용할 수 있도록 저장하기 전에 사용자 입력을 처리합니다.
<% Session("StoredPreference") = RemoveBad(Request.Cookies("UserColor"));
         var TempStr = RemoveBad(Request.QueryString("UserName"));				

특수 문자의 입력된 매개 변수에 따라 출력 필터

이 방법은 클라이언트에 쓴 문자를 필터링하는 것을 제외하고는 입력 필터링 비슷합니다. 효과적인 방법은 이 될 수 있지만 문제가 발표하는 웹 페이지의 HTML 요소를 작성할 수 있습니다.

예를 들어, 특수 문자를 제거하는 제네릭 함수 <TABLE>요소를 기록하는 페이지에서 제거할 것입니다, < 및 > <TABLE>태그 버려진 문자. 따라서 이 방법 유용하게 사용할 수 있으려면 사용자가 전달된 데이터 또는 이전에 사용자가 입력한, 데이터베이스에 저장된 데이터를 필터링합니다.

가능한 악성 데이터 소스

입력을 HTML 동적으로 생성하는 데 사용하는 모든 페이지에 문제가 적용하는 동안 일부 가능한 스폿 확인란 잠재적인 보안 위험에 대해 도움이 되는 악의적인 데이터 소스를 다음과 같습니다.
  • 쿼리 문자열
  • Cookies
  • 게시된 데이터
  • URL 및 PATH_INFO 같은 URL 부분을
  • 데이터베이스에 있는 같은 몇 가지 방식으로 유지됩니다 사용자가 검색된 데이터

결론

결론적으로, 교차 사이트 스크립팅 보안 문제에 관련하여 기억해야 할 주요 사항은 다음과 같습니다.
  • 문제를 확인하지 않은 입력을 기반으로 동적 페이지 생성을 영향을 줍니다.
  • 입력된 데이터에 대한 온전성 검사 생략 가질 수 예기치 않은 보안 의미를. 입력된 유효성 검사 등의 뛰어난 개발 표준을 통해 preventable 문제입니다.
  • 있는 솔루션을 평가하는 데 필요한 경우 사이트 당 페이지, 및 필드 단위로 포함 및 적합한 방법을 사용합니다.

참조

자세한 내용은 다음 권고를 에서 해당 컴퓨터 응급 대응 팀 (CERT) Carnegie Mellon 대학에서 참조하십시오.
http://www.cert.org/advisories/CA-2000-02.html
자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오:
253117Internet Explorer 및 Outlook Express에서 사이트 간 스크립팅 보안 문제를 방지하는 방법
253119CSSI 취약점 ASP 코드를 검토하는 방법을
253120생성된 코드를 CSSI 취약점 위한 Visual InterDev 검토하는 방법을
253121CSSI 취약점 MTS/ASP 코드를 검토하는 방법을

속성

기술 자료: 252985 - 마지막 검토: 2006년 3월 1일 수요일 - 수정: 3.6
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Active Server Pages 2.0
  • Microsoft Active Server Pages 3.0
  • Microsoft Windows 2000 Server
키워드:?
kbmt kbcodesnippet kbcssi kbhowto kbsecurity KB252985 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:252985

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com