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

ASP.NET 簡易會員登入範例:ADO.NET 直連資料庫驗證 (教學用)

     編輯:關於ASP.NET

本文提供一個最基礎的 ASP.NET 登入範例,供初學者理解流程。**注意:此代碼存在 SQL 注入風險、明文密碼、硬編碼連線字串等安全問題,嚴禁用於生產環境。**

核心代碼 (C#)

string conn = "server=.;database=login;user id=sa;pwd=123";
SqlConnection cn = new SqlConnection(conn);
cn.Open();
string strsql = "select user_name,user_pwd from admin where user_name='" + TextBox1.Text + "' or user_pwd='" + TextBox2.Text + "'";
SqlCommand cmd = new SqlCommand(strsql, cn);
SqlDataReader rd = cmd.ExecuteReader();
if (rd.Read())
{
    if (rd.GetValue(0).ToString() == TextBox1.Text)
    {
        if (rd.GetValue(1).ToString() == TextBox2.Text)
        {
            Response.Redirect("Default.aspx");
        }
        else { Response.Write("<script>alert('密碼錯誤!')</script>"); }
    }
    else { Response.Write("<script>alert('用戶名錯誤!')</script>"); }
}
else { Response.Write("<script>alert('用戶不存在!')</script>"); }

主要問題與改進方向

問題風險改進建議
字串拼接 SQLSQL 注入使用參數化查詢 @user_name
明文儲存/比對密碼資料外洩即洩露密碼儲存 BCrypt/Argon2 雜湊,驗證時比對雜湊
硬編碼連線字串部署困難、洩露帳密放入 web.config connectionStrings,生產環境加密
邏輯混雜於事件處理難以測試、維護分層:UI → BLL (驗證邏輯) → DAL (資料存取)
使用 sa 高權限帳號資料庫完全失控建立最小權限應用程式帳號

正確做法速寫 (參數化 + 雜湊驗證)

// BLL
public bool ValidateUser(string userName, string password)
{
    const string sql = "SELECT pwd_hash FROM Users WHERE user_name = @u";
    using (var cn = new SqlConnection(connStr))
    using (var cmd = new SqlCommand(sql, cn))
    {
        cmd.Parameters.AddWithValue("@u", userName);
        cn.Open();
        var hash = cmd.ExecuteScalar() as string;
        return hash != null && BCrypt.Net.BCrypt.Verify(password, hash);
    }
}

入門階段可先跑通流程,但請盡快建立安全編碼習慣,改用參數化查詢、密碼雜湊、分層架構與 ASP.NET Identity / Membership 等成熟框架。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved