首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

程式碼閱讀筆記:TimeTracker QueryString 防禦性程式設計

     編輯:關於ASP.NET

問題場景

大量使用 Request.QueryString["index"] 直接轉 int,用戶手動修改 URL 為非數字或空值會拋出例外。

解決方案:頁面基類封裝安全取值方法

public class PageBase : System.Web.UI.Page {
    // 字串版
    protected void GetQueryStringValue(string name, out string result) {
        result = Request.QueryString[name] ?? "";
        if (string.IsNullOrEmpty(result)) ErrorRedirect();
    }

    // 整數版 (含溢位/格式/空值防護)
    protected void GetQueryStringValue(string name, out int result) {
        GetQueryStringValue(name, out string str);
        result = 0;
        try { result = Convert.ToInt32(str); }
        catch (OverflowException) { ErrorRedirect(); }
        catch (FormatException) { ErrorRedirect(); }
        catch (ArgumentException) { ErrorRedirect(); }
    }

    protected void ErrorRedirect() => Response.Redirect("ErrorQueryString.aspx", true);
}

使用方式

public class ProjectList : PageBase {
    protected void Page_Load(...) {
        GetQueryStringValue("index", out int idx); // 安全取得,異常自動導向錯誤頁
        // 業務邏輯...
    }
}

設計優勢

  • 集中處理驗證邏輯,避免重複 try/catch。
  • 統一錯誤導向,用戶體驗一致。
  • 衍生頁面程式碼乾淨,專注業務流程。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved