C# 在c中验证查询字符串参数的最佳方法#

C# 在c中验证查询字符串参数的最佳方法#,c#,security,C#,Security,我在查询字符串中接收数字变量 我正在使用以下代码进行验证: if (!String.IsNullOrEmpty(Request.QueryString["num"])) if (!int.TryParse(Request.QueryString["num"],out value) throw SecurityError; 验证是否足够安全?这是最有效的吗? (假设我得到的每个整数都是有效的)在上面的代码中,您没有处理的唯一情况是在查询字符串中没有传递“num”。我不确定

我在查询字符串中接收数字变量

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

if (!String.IsNullOrEmpty(Request.QueryString["num"]))
    if (!int.TryParse(Request.QueryString["num"],out value)
        throw SecurityError;
验证是否足够安全?这是最有效的吗?
(假设我得到的每个整数都是有效的)

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

if (!int.TryParse(Request.QueryString["num"],out value)
    throw SecurityError;
此外,“SecurityError”似乎是一种奇怪的异常类型,在非数值参数的情况下抛出


否则看起来很好。

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

if (!int.TryParse(Request.QueryString["num"],out value)
    throw SecurityError;
此外,“SecurityError”似乎是一种奇怪的异常类型,在非数值参数的情况下抛出


否则它看起来很好。

它既安全又高效。您甚至可以删除第一个
,如果

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

它安全高效。您甚至可以删除第一个
,如果

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