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

ASP.NET 通用有效性驗證框架:格式、安全、交互三層設計

     編輯:關於ASP.NET

三層架構設計

  1. 框架無關層:fsDevCommon.CheckValidValue — 純邏輯,無 Web 依賴
  2. Web 交互層:驗證控件、錯誤提示、客戶端腳本生成
  3. 頁面調用層:聲明式配置、統一入口驗證

核心驗證引擎(節選)

public bool CheckValidValue(string strValue, string strTypeFormat) {
    if (string.IsNullOrEmpty(strTypeFormat)) return true;
    
    // D: 日期  T: 日期時間  N: 整數  F: 浮點  C: 字符串/枚舉
    char type = char.ToUpper(strTypeFormat[0]);
    var parts = strTypeFormat.Split(',');
    string op = parts.Length > 1 ? parts[1].Trim() : "=";
    string min = parts.Length > 2 ? parts[2] : null;
    string max = parts.Length > 3 ? parts[3] : null;
    
    switch (type) {
        case 'D': return ValidateDate(strValue, op, min, max);
        case 'T': return ValidateDateTime(strValue, op, min, max);
        case 'N': return ValidateInt(strValue, op, min, max);
        case 'F': return ValidateDouble(strValue, op, min, max);
        case 'C': return ValidateString(strValue, op, min, max);
        default: return true;
    }
}

// 格式示例:"D,>=,2020-01-01" 日期不早於2020年
// "N,BETWEEN,1,100" 整數在1-100之間
// "C,IN,OptionA,OptionB|OptionC" 字符串在枚舉範圍內

SQL 注入防護內建

private static readonly Regex SqlInjectionPattern = new Regex(
    @"(\b(SELECT|INSERT|UPDATE|DELETE|DROP|UNION|EXEC)\b)|(--|;|/\*|\*/|'|""|%27|%22)",
    RegexOptions.IgnoreCase | RegexOptions.Compiled);

public bool CheckSqlSafe(string input) => !SqlInjectionPattern.IsMatch(input);

Web 層聲明式使用

<asp:TextBox ID="txtAge" runat="server" 
    ValidateFormat="N,BETWEEN,1,120" 
    ErrorMessage="年齡必須在1-120之間" />
<asp:TextBox ID="txtEmail" runat="server" 
    ValidateFormat="C,REGEX,^\w+@\w+\.\w+$" 
    ErrorMessage="郵箱格式不正確" />

// 頁面統一驗證
protected void btnSubmit_Click(object sender, EventArgs e) {
    if (!ValidationHelper.ValidatePage(this)) return;
    // 業務邏輯...
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved