2009-12-15 104 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; 
相关问题