首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

ASP 連接 SQL Server 完整教學:三種連線模式與登入系統實作

     編輯:關於SqlServer

ASP (Active Server Pages) 與資料庫結合是早期動態網站核心技術。本文系統說明三種建立連線的方法、連線腳本模組化寫法,並以會員登入系統為例示範完整流程。

三種連線模式比較

模式優點缺點適用場景
ODBC 系統 DSN集中管理、修改 DSN 即生效、跨語言共用需在每台主機建立 DSN、部署麻煩、效能稍低企業內部多伺服器叢集、需頻繁切換資料庫
OLE DB (SQLOLEDB)無需 DSN、原生提供者、效能最佳、支援所有 SQL Server 功能連接字串硬編碼在程式推薦預設選擇
ODBC Driver 字串無需 DSN、相容性廣、可用於非 SQL Server 資料源效能次於 OLE DB、參數支援較少舊專案遷移、異構資料庫連線

連線腳本模組化:conn.asp

<%
' conn.asp — 放在網站根目錄或共用資料夾
Dim connStr
' 模式二:OLE DB (建議)
connStr = "Provider=SQLOLEDB.1;Data Source=192.168.1.100;Initial Catalog=MyForum;User ID=web_user;Password=P@ssw0rd;"

' 模式一:ODBC DSN (若已建立 DSN=MyDSN)
' connStr = "DSN=MyDSN;UID=web_user;PWD=P@ssw0rd;"

' 模式三:ODBC Driver
' connStr = "Driver={SQL Server};Server=192.168.1.100;Database=MyForum;UID=web_user;PWD=P@ssw0rd;"

' 將連接字串存入 Application 變數,全站共用
Application.Lock
Application("ConnStr") = connStr
Application.Unlock
%>

登入系統實作

資料表結構

CREATE TABLE Members (
    MemberID INT IDENTITY(1,1) PRIMARY KEY,
    LoginName NVARCHAR(50) NOT NULL UNIQUE,
    PasswordHash VARBINARY(MAX) NOT NULL,  -- bcrypt/Argon2 雜湊
    Salt VARBINARY(32) NOT NULL,
    Email NVARCHAR(100),
    RegDate DATETIME DEFAULT GETDATE(),
    IsActive BIT DEFAULT 1
);

登入檢查頁 — login_check.asp

<!--#include file="conn.asp"-->
<%
Dim conn, cmd, rs, loginName, pwd, hashedPwd
loginName = Trim(Request.Form("loginName"))
pwd = Trim(Request.Form("pwd"))

If loginName = "" Or pwd = "" Then
    Response.Write "請輸入帳號密碼。"
    Response.End
End If

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open Application("ConnStr")

Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandText = "SELECT MemberID, PasswordHash, Salt FROM Members WHERE LoginName = ? AND IsActive = 1"
cmd.CommandType = 1
cmd.Parameters.Append cmd.CreateParameter("@LoginName", 202, 1, 50, loginName) ' adVarWChar
Set rs = cmd.Execute

If rs.EOF Then
    Response.Write "帳號不存在或已停用。"
Else
    ' 這裡需呼叫雜湊驗證函式,示範用簡單比對
    ' 實際專案請引用 BCrypt.NET 或 ASP 相容雜湊元件
    If VerifyHash(pwd, rs("Salt"), rs("PasswordHash")) Then
        Session("MemberID") = rs("MemberID")
        Session("LoginName") = loginName
        Response.Redirect "index.asp"
    Else
        Response.Write "密碼錯誤。"
    End If
End If

rs.Close: Set rs = Nothing
conn.Close: Set conn = Nothing

Function VerifyHash(plainPwd, salt, storedHash)
    ' 伪代碼:返回 True/False
    VerifyHash = False
End Function
%>

安全性強化重點

  1. 參數化查詢:所有使用者輸入皆用 Command.Parameters,杜絕 SQL Injection。
  2. 密碼雜湊:絕不儲存明文,採用 bcrypt/Argon2/PBKDF2 + 隨機 Salt。
  3. 最小權限帳號:網站連線帳號僅授 EXECUTE 預存程序或 SELECT/INSERT/UPDATE 特定表。
  4. 連接字串加密:生產環境將連接字串加密存放於 web.config (ASP.NET) 或註冊表/COM+ 元件 (傳統 ASP)。
  5. 錯誤訊息不洩露細節:統一顯示「帳號或密碼錯誤」,避免帳號枚舉。

結束語

連線建立是資料庫應用的地基。選對模式、模組化管理、參數化查詢、最小權限,四大原則貫徹執行,即能構建穩健、安全、可維護的 ASP + SQL Server 系統。

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