ASP.NET (WebForms) 登錄頁核心:參數化 SQL + 安全密碼驗證 + 會話管理。切勿拼接字符串!
protected void btnLogin_Click(object sender, EventArgs e) {
string connStr = ConfigurationManager.ConnectionStrings["MyDb"].ConnectionString;
string sql = "SELECT COUNT(1) FROM Users WHERE Username=@u AND PasswordHash=@p";
using (SqlConnection conn = new SqlConnection(connStr))
using (SqlCommand cmd = new SqlCommand(sql, conn)) {
cmd.Parameters.AddWithValue("@u", txtUser.Text.Trim());
// 實際應存儲 BCrypt/Argon2 雜值,此處演示明文對比
cmd.Parameters.AddWithValue("@p", txtPwd.Text); // TODO: Hash 驗證
conn.Open();
int count = (int)cmd.ExecuteScalar();
if (count > 0) {
Session["User"] = txtUser.Text.Trim();
Response.Redirect("~/Dashboard.aspx");
} else {
lblMsg.Text = "用戶名或密碼錯誤";
}
}
}
BCrypt.Net.BCrypt.HashPassword(pwd),登錄時 BCrypt.Net.BCrypt.Verify(pwd, hash)。web.config `<connectionStrings>
<add name="MyDb" connectionString="Server=.;Database=MyApp;User=sa;Password=StrongPwd;Encrypt=True;TrustServerCertificate=False;" providerName="System.Data.SqlClient" />
</connectionStrings>