2011-04-22 2 views
0

나는 쿼리 문자열 매개 변수를 취하여 javascript 변수로 출력하는 페이지가 있습니다. 이 변수는 페이지를 탐색하는 매개 변수로 사용됩니다.ASP.Net의 javascript 출력에 대한 XSS

쿼리 문자열 매개 변수에 JSEncode 만 XSS를 방지합니까?

입력 :

www.foo.com?t=abc<script>alert('hello xss')</script> 

은 내가 JS의 VAR로 Microsoft Web Protection Library에서 AntiXSS 클래스에서

var qs = Request.QueryString["t"].jsencode(); 
+0

제목에 "asp.net C#"을 추가하지 마십시오. 그것이 바로 태그가있는 것입니다. –

답변

2

봐이 t 값을 방출합니다. JavaScriptEncode는 원하는 것을 정확히 수행 할 수있는 방법을 포함하여 입력을 살균하는 유용한 방법을 제공합니다.

0

JavaScript 변수에 대한 쿼리 문자열을 올바르게 인코딩하는 것 외에도 실제로 응용 프로그램 논리에서 리디렉션이 허용되는지 확인해야합니다. 나는. www.foo.com?t=http://very.evil.com/dark.side과 같은 것을 완전히 차단하고 페이지를 렌더링하지 못하게 할 수도 있습니다 (실제로 페이지가 임의의 다른 사이트로 리디렉션되는 것으로 예상하지 않는 한).

0

두 부분으로 나누고 싶습니다. 자바 스크립트

var sourceUri = Request.QueryString["t"]; 
if (!Uri.IsWellFormedUriString(sourceUri, UriKind.Absolute)) 
{ 
    // Not a valid URI - bail out 
} 

둘째, 당신이해야 출력 인코딩 :이 경우, 당신은 "t"가 실제로 유효한 URL인지 확인 할 수 있도록 우선, 화이트 목록에 대해 신뢰할 수없는 입력을 확인합니다.

var encodedString = Encoder.JavaScriptEncode(sourceUri); 

더 읽기를 들어, OWASP Top 10 for .NET developers part 2: Cross-Site Scripting (XSS)을 시도 :이 작업을 수행하는 가장 좋은 방법은 다음 AntiXSS을 잡아 구현하는 것입니다.