Windows 整合認證:使用者透過 Windows 帳號連線,SQL Server 驗證 Windows 權杖(SID + 群組 SID)。優點:單一身分管理、密碼策略由 AD 強制、支援 Kerberos/NTLM、無密碼傳輸風險、審計完整。首選模式。
混合模式:同時支援 Windows 與 SQL Server 登入(儲存於 master..sysxlogins)。缺點:密碼管理分散、跨伺服器同步困難、每資料庫權限需個別設定、應用程式常內嵌帳密風險。僅用於無法使用 Windows 認證的舊系統/異構環境。
Web 應用常以單一 SQL 登入(甚至 sa)連線資料庫,導致無法審計個別使用者、權限無法細粒度控制。IIS 提供四種驗證可映射至 SQL:
建議:優先採用整合式 Windows 驗證或匿名 NT 帳戶隔離,避免 SQL 登入內嵌於程式碼。
Accounting_DataEntry, Accounting_Managers),名稱語意化。SQL_Server_Admins → sysadmin 伺服器角色SQL_Server_Users → 僅授予登入權限,預設資料庫 master,無其他權限SQL_Server_Denied_Users → 明確 DENY 登入(拒絕優先)SQL_Server_DBCreators → dbcreatorSQL_Server_Security_Operators → securityadminSQL_Server_Developers → 開發權限DB_Name_Users → 個別資料庫存取群組sp_grantlogin/sp_addsrvrolemember/sp_addrolemember 而非 EM,因 EM 僅能選現有登入,無法直接授權網域群組。sp_grantdbaccess 授權 DB_Name_Users 群組存取。sp_denydbaccess,拒絕存取需建立 DB_Name_Denied_Users 並加入 db_denydatareader/writer 角色。db_datareader 等)作用於全資料庫,易過度授權。僅保留 db_securityadmin(管理權限)、db_owner(架構變更)兩內建角色,其他改用自訂角色精確授權。model 資料庫可預設新資料庫繼承角色與權限結構。SQL_Server_Users 群組;資料庫存取 ← DB_Name_Users 群組。Function Filter_SQL(strData)
Dim strFilter, blnFlag, i, arr
strFilter = "',;,--,@,_,exec,declare" ' 自行擴充
blnFlag = False
arr = Split(strFilter, ",")
For i = 0 To UBound(arr)
If InStr(strData, arr(i)) > 0 Then blnFlag = True : Exit For
Next
If blnFlag Then Response.Redirect "error.asp" Else Filter_SQL = strData
End Function
所有輸入參數經過濾後再拼接 SQL,或改用參數化查詢(Command.Parameters)徹底解決注入。