2011-01-05 12 views
0

: Here's the first oneCAT.NET : 취약점 또는 거짓 긍정? 가끔 시리즈 2

는 CAT.NET 다음은 ASP.NET에서 정품 취약점하거나 거짓 긍정적이라고 맞습니까?

var myInt = Int32.Parse(txtUserInput.Text); 

Response.Redirect(string.Format("myPage.aspx?myId={0}", myInt); 

CAT.NET은 myInt 인코딩을 통한 치료가 필요한 리디렉션 취약점으로보고합니다.

+1

내게는 해가되지 않지만 프로그램의 다른 부분에 따라 문제가 될 수 있습니다. – CodesInChaos

답변

1

그 위험하지만 전화를하지 않을 자신이 아닌 구문 분석에 실패하면 나는 때문에 나쁜 사용자 입력에 늘 예외를 슬로우로

int myInt; 
if(Int32.TryParse(txtUserInput.Text,out myInt)){ 
    Response.Redirect(string.Format("myPage.aspx?myId={0}", myInt); 
    } 

내 마음 청소기가 그것을 자신을 작성합니다 우리는 얼마나 int를 명시 적으로 입력합니다.

모든 오류 처리 코드는 끝에 else 문으로 묶을 수 있습니다.

+0

감사. TryParse에 동의합니다. 가능한 한 샘플을 사용하여 문제를 해결하려고했습니다. –

1

저는 그렇게 생각하지 않으므로 예외가 발생할 수 있으므로 TryParse가 더 나은 방법 일 수 있습니다. 사용자 입력 및 리디렉션을 기반으로하기 때문에 고함을 지르고 있습니다. 아마도 조금 나빠질 수 있습니다.

+0

CAT.NET은 이러한 라인을 따라 많은 오 탐지 (false positive)를 생성하는 것처럼 보입니다. 나는 아무것도 놓치지 않았다는 확인을 찾고 있었고, 그것에 대한 귀하의 의견에 감사드립니다. –

0

이 코드로 인해 악용 될 수있는 취약점이 없습니다. 모든 취약점은 myPage.aspx가 myId 값으로 수행하는 작업의 결과이며 사용자 URL은 작성되지 않습니다. 누구나 myPage.aspx를 쿼리 문자열에서 원하는대로 쉽게 명중시킬 수 있습니다.

그러나 두 행 사이의 코드에서 아무 것도 남겨 두지 않은 경우를 가정하면 좋지 않습니다. txtUserInput.Text에 숫자 만 포함하고 허용 가능한 값 내에 있는지 확인해야합니다.

부적절한 URL 생성이 아닌 게시 ​​된 페이지의 사용자 제공 데이터를 부적절하게 파싱하여 악용 될 수 있습니다. 양식에 입력 된 내용으로 인해 웹 사이트가 깨진 URL을 쓰지 않도록하려면 좋은 생각이지만 프런트 엔드의 입력 유효성 검사는 보안과 관련이 없습니다. 중요한 것은 모든 게시물이나 쿼리 문자열이 위조 될 수 있으므로 을 허용하는 코드입니다.

+0

글쎄, 네, 그게 내가 물어 보는 것입니다 -이 입력을 정수로 파싱 한 결과 -이 코드는 진정으로 취약합니다. 나의 의심은 아니었다. 그리고 그것은 내가 감사하는 여기의 설명에 의해 확인되는 것처럼 보인다. 분명히 txtInput의 내용을 URL에 채우는 것은 안전하지 않습니다. –

+0

실제로 요점은 txtInput의 내용을 URL에 채우는 것이 안전하지 않다는 것입니다. 누군가가 원하는 것을 웹 서버에 닿는 URL에 채울 수 있기 때문입니다. 추악한 상황이 발생할 수 있지만, 처음에는 myPage.aspx의 존재보다 더 이상 안전하지 않습니다. 그것은 URL의 다른 쪽 끝에있는 페이지가 안전하거나 안전하지 않은 페이지입니다. –