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

ASP + SQL Server 打造網頁存取控制防火牆:從 IP 過濾到帳號驗證

     編輯:關於SqlServer

前言

單純用 JavaScript/VBScript 做前端驗證,原始碼在瀏覽器可見,安全性極低。ASP 執行於伺服器端,搭配 SQL Server 資料庫驗證,可建立簡單、高效、可靠的存取控制機制。

架構設計

  1. SQL Server 建立登入帳號:儲存允許存取的使用者帳密
  2. IIS 建立系統 DSN:ODBC 資料來源名稱,供 ASP 連線資料庫
  3. ASP 程式邏輯:IP 白名單 + 帳密驗證雙重防護

DSN 類型比較與建議

建立系統 DSN 步驟

  1. 控制台 →「ODBC 資料來源管理員」→「系統 DSN」頁籤 →「新增」
  2. 選擇「SQL Server」→ 下一步
  3. 輸入 DSN 名稱、描述、伺服器位址
  4. 選擇驗證模式(Windows 整合或 SQL Server 驗證)
  5. 選擇預設資料庫 → 完成

ASP 防火牆程式碼實作

<%@ Language=VBScript %>
<%
' 取得客戶端 IP
Dim remoteIP, thirdOctet
remoteIP = Request.ServerVariables("REMOTE_ADDR")

' 擷取第三段 IP(假設內網 10.61.96.x ~ 10.61.97.x)
Dim parts
parts = Split(remoteIP, ".")
If UBound(parts) = 3 Then thirdOctet = CInt(parts(2))

' 判斷邏輯:內網 IP 直接通過,外網需帳密驗證
Dim isInternal
isInternal = (Left(remoteIP, 5) = "10.61") And (thirdOctet >= 96 And thirdOctet <= 97)

If Not isInternal Then
    ' 外網使用者:驗證帳密
    Dim username, password, connStr, conn
    username = Request.Form("t1")
    password = Request.Form("t2")
    
    If username <> "" And password <> "" Then
        ' 讀取 DSN 設定檔
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set f = fso.OpenTextFile(Server.MapPath("dsn.txt"))
        connStr = f.ReadLine & ";uid=" & username & ";pwd=" & password
        f.Close
        
        Set conn = Server.CreateObject("ADODB.Connection")
        On Error Resume Next
        conn.Open connStr
        
        If Err.Number = 3709 Then
            ' 驗證失敗
            Response.Write "帳號或密碼錯誤!
" ShowLoginForm() Else ' 驗證成功 Session("Authenticated") = True conn.Close Response.Write "歡迎,您已通過驗證!" End If Set conn = Nothing Else ShowLoginForm() End If Else ' 內網使用者 Session("Authenticated") = True Response.Write "內網使用者,直接通過驗證!" End If Sub ShowLoginForm() Response.Write "
" Response.Write "帳號: " Response.Write "密碼: " Response.Write "" Response.Write "" End Sub %>

多頁面保護機制

在每個需保護的頁面頂端加入:

<%
If Session("Authenticated") <> True Then
    Response.Redirect "firewall.asp"
End If
%>

安全性強化建議

  • 密碼資料庫欄位使用雜湊儲存(如 SHA-256 + Salt)
  • 連線字串勿硬編碼,放置於 DSN 或加密設定檔
  • 啟用 SSL/TLS 加密傳輸
  • 記錄登入嘗試(成功/失敗)供稽核
  • 考慮加入帳號鎖定機制防暴力破解
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類型儲存位置適用範圍建議
使用者 DSN登錄表僅建立者可用不建議
系統 DSN登錄表所有登入使用者✓ 推薦
檔案 DSN實體檔案所有使用者、可攜帶✓ 推薦(配合 NTFS 權限)