2009-12-15 90 views
0

我在我的queryString中接收數字變量。在c#中驗證QueryString參數的最佳方法

我做驗證用下面的代碼:

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

就夠了驗證安全嗎?它是最高效的嗎? (假設我得到的每個整數都是有效的)

回答

4

上述代碼中唯一不處理的情況是在查詢字符串中不傳遞'num'。我不確定你想在這種情況下做什麼,但是你可以刪除外部的if塊,這樣如果參數根本沒有被傳遞,那麼你的異常就會被拋出。

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

另外,'SecurityError'在拋出非數字參數的情況下似乎是一種奇怪的異常類型。

否則它看起來很好。

1

它安全高效。你甚至可以刪除第一個if

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