在c#中验证QueryString参数的最佳方法

时间:2009-12-15 07:13:27

标签: c# security

我在queryString中收到数字变量。

我正在使用以下代码进行验证:

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

验证是否足够安全?它效率最高吗? (假设我得到的每个int数都有效)

2 个答案:

答案 0 :(得分:4)

在上面的代码中,您没有处理的唯一情况是查询字符串中没有传递'num'。我不确定在这种情况下你想做什么,但你可以删除外部if块,以便在根本不传递参数时抛出异常。

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

此外,在非数字参数的情况下,'SecurityError'似乎是一种奇怪的异常类型。

否则它看起来很好。

答案 1 :(得分:1)

安全高效。您甚至可以删除第一个if

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