我在我的queryString中接收數字變量。在c#中驗證QueryString參數的最佳方法
我做驗證用下面的代碼:
if (!String.IsNullOrEmpty(Request.QueryString["num"]))
if (!int.TryParse(Request.QueryString["num"],out value)
throw SecurityError;
就夠了驗證安全嗎?它是最高效的嗎? (假設我得到的每個整數都是有效的)
我在我的queryString中接收數字變量。在c#中驗證QueryString參數的最佳方法
我做驗證用下面的代碼:
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'在拋出非數字參數的情況下似乎是一種奇怪的異常類型。
否則它看起來很好。
它安全高效。你甚至可以刪除第一個if
:
if (!int.TryParse(Request.QueryString["num"], out value)
throw SecurityError;