2009-12-15 4 views
0

queryString에 숫자 변수가 나타납니다.C에서 QueryString 매개 변수의 유효성을 검사하는 가장 좋은 방법 #

나는 다음과 같은 코드를 사용하여 유효성 검사를하고 있어요 :

if (!String.IsNullOrEmpty(Request.QueryString["num"])) 
    if (!int.TryParse(Request.QueryString["num"],out value) 
     throw SecurityError; 

이 충분이 검증 안전한가요? 가장 효율적인가요? (내가 얻은 모든 정수가 유효하다고 가정 해 보겠습니다.)

답변

4

위의 코드에서 처리하지 않는 유일한 경우는 쿼리 문자열에 'num'이 전달되지 않은 경우입니다. 이 경우에는 무엇을하고 싶은지 잘 모르겠지만 바깥 쪽 if 블록을 제거하면 매개 변수가 전혀 전달되지 않으면 예외가 throw됩니다.

if (!int.TryParse(Request.QueryString["num"],out value) 
    throw SecurityError; 

또한, '오류 SecurityError'는 숫자가 아닌 인수의 경우에 던져 예외의 이상한 유형을 보인다.

그렇지 않으면 정상적으로 보입니다.

1

안전하고 효율적입니다. 첫 번째를 제거 할 수도 있습니다. if :

if (!int.TryParse(Request.QueryString["num"], out value) 
    throw SecurityError; 
관련 문제