我在queryString中收到数字变量。
我正在使用以下代码进行验证:
if (!String.IsNullOrEmpty(Request.QueryString["num"]))
if (!int.TryParse(Request.QueryString["num"],out value)
throw SecurityError;
验证是否足够安全?它效率最高吗? (假设我得到的每个int数都有效)
答案 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;