共用方式為


SQL Server 中的驗證 (ADO.NET)

更新: November 2007

SQL Server 支援兩種驗證模式:Windows 驗證模式和混合模式。

  • Windows 驗證是預設設定,也經常稱為整合式安全性,因為這個 SQL Server 安全性模型會與 Windows 緊密整合。 特定的 Windows 使用者和群組帳戶會受信任而可登入 SQL Server。 已經過驗證的 Windows 使用者不必再提供額外認證資料。

  • 混合模式支援 Windows 和 SQL Server 提供的驗證。 使用者名稱和密碼組會在 SQL Server 內進行維護。

安全性注意事項:

建議盡量使用「Windows 驗證」。 Windows 驗證會使用一系列的加密訊息在 SQL Server 中驗證使用者。 使用 SQL Server 登入時,SQL Server 登入名稱及密碼會透過網路傳遞,因而降低其安全性。

使用 Windows 驗證的好處是因為使用者已登入 Windows,所以不必再另行登入 SQL Server。 下列 SqlConnection.ConnectionString 可指定 Windows 驗證,且不需要使用者名稱或密碼。

"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;
注意事項:

登入不同於資料庫使用者。 您必須藉由個別作業,將登入或 Windows 群組對應到資料庫使用者或角色。 接著再將存取資料庫物件的權限授與使用者或角色。

驗證案例

在下列情況中,Windows 驗證通常是最佳選擇:

  • 有網域控制站存在。

  • 應用程式和資料庫位於相同的電腦。

  • 您使用的是 SQL Server Express 執行個體 (Instance)。

SQL Server 登入通常用於以下狀況:

  • 如果您擁有工作群組。

  • 使用者是自不同的非受信任網域進行連接。

  • 網際網路應用程式,例如 ASP.NET。

注意事項:

指定 Windows 驗證並不會停用 SQL Server 登入。 請使用 ALTER LOGIN DISABLE Transact-SQL 陳述式來停用具有高權限的 SQL Server 登入。

登入類型

SQL Server 2000 支援三種登入類型:

  • 本機 Windows 使用者帳戶或受信任的網域帳戶。 SQL Server 會仰賴 Windows 來驗證 Windows 使用者帳戶。

  • Windows 群組。 如果授與存取權給 Windows 群組,則也會授權給全部該群組成員的 Windows 使用者登入。

  • SQL Server 登入。 SQL Server 會將使用者名稱和密碼雜湊儲存在 master 資料庫,並使用內部驗證方法確認登入作業。

注意事項:

SQL Server 2005 會新增從憑證建立的登入或非對稱金鑰。這些只能用於程式碼簽章, 而不會用來連接至 SQL Server。

混合模式驗證

如果您必須使用混合模式驗證,則必須建立儲存在 SQL Server 中的 SQL Server 登入。 然後在執行階段時還需要提供 SQL Server 使用者名稱和密碼。

安全性注意事項:

SQL Server 會使用名為 sa (「系統管理員」的縮寫) 的 SQL Server 登入來進行安裝。 請指派強式密碼給 sa 登入,且不要在應用程式中使用 sa 登入。 sa 登入對應的是 sysadmin 固定伺服器角色,對於整個伺服器具有不可變更之管理權限。 如果攻擊者取得系統管理員的存取權,就可以大肆破壞而毫不受限。 Windows BUILTIN\Administrators 群組 (本機系統管理員群組) 的所有成員,都會預設為 sysadmin 角色的成員,但可以從該角色移除。

當 SQL Server 2005 是在 Windows Server 2003 或更新版本上執行時, SQL Server 登入就可以使用 Windows 密碼原則機制。 密碼複雜性原則是為了阻止暴力攻擊而設計,方法是盡可能地增加密碼數目。SQL Server 2005 可套用 Windows Server 2003 所使用的相同複雜性和過期原則來處理 SQL Server 內部使用的密碼。

安全性注意事項:

串連來自使用者輸入的連接字串,可能會使您易遭受連接字串插入式攻擊。 請使用 SqlConnectionStringBuilder 在執行階段建立語法有效的連接字串。 如需詳細資訊,請參閱連接字串產生器 (ADO.NET)

外部資源

如需詳細資訊,請參閱下列資源。

資源

描述

主體,《SQL Server 2008 線上叢書》

說明 SQL Server 2008 中的登入及其他安全性主體。

主體,《SQL Server 2005 線上叢書》

說明 SQL Server 2005 中的登入和其他安全性主體。

登入 (英文),《SQL Server 2000 線上叢書》

說明 SQL Server 2000 中的登入和驗證。

請參閱

概念

SQL Server 中的應用程式安全性案例 (ADO.NET)

其他資源

保護 ADO.NET 應用程式的安全

連接至資料來源 (ADO.NET)

連接字串 (ADO.NET)