top
Loading...
IIS、ASP.NET和SQLServer的安全性問題

目錄:
定義 DotNetKB 自定義 IIS 用戶帳戶
授權 DotNetKB 用戶帳戶訪問 SQL Server
設置您的 ASP.NET 應用程序以模擬 DotNetKB 用戶

SQL Server、Internet 信息服務器和 ASP.NET 引擎都提供了堅實可靠的安全模型,它們可以很好地在一起協同工作。為了保證用戶數據和應用程序的安全,Microsoft 還為每項服務的默認設置設置了相當低的值。大多數開發人員面臨的挑戰是如何使用 SQL Server、IIS 和 ASP.NET 在應用程序和數據之間設置適當的信任級別,而不會留下可被別人輕易攻入的安全漏洞。由于涉及三類服務(SQL Server、IIS 和 ASP.NET),所以需要采取三個關鍵的步驟來確保解決方案的安全。本部分討論一種為 Web 應用程序設置足夠權限和信任級別的更常用(且可靠)的方法。

定義 DotNetKB 自定義 IIS 用戶帳戶

保證 Web 應用程序安全性的最安全的方法是定義一個權限有限的自定義用戶,然后對 IIS 進行配置,使之能夠在執行您的 Web 應用程序時能作為自定義用戶運行。這是相當容易實現的,可以確保訪問您的 Web 應用程序的每個訪問者都只具有您希望他們具有的權限。

第一步是生成一個新的 Windows 用戶(本例中稱為 DotNetKB),為其設置一個增強型密碼,然后將其添加到 Windows 來賓組 (Guest Windows Group) 中。同時,確保選中 Password never expires(密碼永不過期)和 User cannot change password(用戶不能更改密碼)復選框。這樣將生成一個權限有限的用戶,在 IIS 中運行您的 Web 應用程序時,您可以將其用作標識(參見圖 7)。

圖 7:生成的權限有限的用戶

然后,調用 Internet 信息服務器管理員并選擇承載這些網頁的 Web 應用程序。在本例中,您可以選擇承載前文所生成的測試頁的 Web 應用程序 (DotNetKB_WebSite)。在樹視圖中的 Web 應用程序上單擊鼠標右鍵,然后從上下文相關菜單中選擇 Properties...(屬性...)。然后選擇 Directory Security(目錄安全性)并單擊該對話框 Anonymous access and authentication control(匿名訪問和驗證控制)部分中的 Edit(編輯)按鈕。最后,輸入自定義用戶名 (DotNetKB),取消選擇 Allow IIS to control password(允許 IIS 控制密碼)復選框,并輸入該自定義用戶帳戶的密碼。完成所有這些工作之后,單擊 OK(確定)按鈕,將這些更改保存到 IIS 配置數據庫中(參見圖 8)。

圖 8:Authentication Methods(驗證方法)對話框

此時,IIS 將在一個權限有限的自定義帳戶下運行。任何訪問者訪問您應用程序的網頁時,都將以這個自定義用戶身份運行,且只具有該自定義用戶的驗證權限。

授權 DotNetKB 用戶帳戶訪問 SQL Server

然后,您需要為該自定義用戶授予訪問數據庫 (DotNetKB) 的相應權限。為此,您可以使用 Microsoft SQL Server 企業管理器或編寫一個自定義腳本,以創建一個這樣的用戶并授予其訪問特定對象的權限。本文介紹如何使用 SQL Server 企業管理器完成此操作。

注意:盡管 Visual Studio .NET 2003 具有與 SQL Server 兼容的許多強大的集成功能,但也不允許從 Visual Studio .NET 2003 中輕松管理用戶和用戶權限。在大型的組織和團隊中,這些高級任務通常由數據庫管理員完成。

因此,啟動 SQL Server 企業管理器之后,您可以按照以下步驟將自定義用戶 (DotNetKB) 添加數據庫中(參見圖 9):

·在左側的樹視圖中,展開節點以顯示 DotNetKB 數據庫。在我的計算機上,樹視圖的結構如下:Console Root | SQL Server Group | (LOCAL) (Windows NT) | Databases | DotNetKB。
·然后,在數據庫下的 Users(用戶)節點上單擊鼠標右鍵,并選擇 New Database User...(新建數據庫用戶...)。顯示 Database User Properties - New User(數據庫用戶屬性 - 新建用戶)對話框時,從 Login name(登錄名)下拉框中選擇 (<新建>)。
·顯示 SQL Server Login Properties - New Login(SQL Server 登錄屬性 - 新建登錄)對話框時,選擇 General(常規)選項卡,并在 Name(名稱)輸入框中輸入 DotNetKB。確保選中 Windows Authentication(Windows 驗證)單選按鈕,并從 Domain(域)下拉框中選擇自定義用戶帳戶所在的計算機的名稱。然后從 Database(數據庫)下拉框中選擇 DotNetKB。
·現在,選擇 Databases(數據庫)選項卡,在對話框頂部的列表中找到 DotNetKB 數據庫并選中它。然后,確保選中對話框底部列表中的 public(公共)角色。最后,單擊對話框底部的 OK(確定)按鈕,保存您的更改。

圖 9:在數據庫中添加自定義用戶

然后,您需要為 DotNetKB 數據庫中的所有存儲過程和自定義函數添加執行權限。為此,您只需為 public(公共)角色授予權限。您可以將權限授予 DotNetKB 用戶,這樣將使以后的登錄(當這些用戶獲得訪問 DotNetKB 的權限時)更容易執行存儲過程,而不需要為每個用戶添加新的權限。

下面是為 DotNetKB 數據庫中的存儲過程和函數授予執行權限的步驟:

·突出顯示樹視圖中 DotNetKB 數據庫下的 Users(用戶)節點,以顯示此數據庫的用戶列表。找到 DotNetKB 用戶并在其上雙擊,打開 Database Users Properties(數據庫用戶屬性)對話框。
·突出顯示(選中)public(公共)角色時,單擊 Properties...(屬性...)按鈕,打開 Database Role Properties(數據庫角色屬性)對話框。然后單擊 Permissions...(權限...)按鈕,顯示數據庫對象和權限設置列表。
·選中對話框頂部 Database role(數據庫角色)下拉列表中的 public(公共)角色之后,找到為此數據庫定義的所有存儲過程和自定義函數(可能需要展開對話框才能看到全名),并確保選中各項旁邊的 EXECUTE(執行)復選框。您可能會發現某些系統對象的其他一些復選框也被選中了,請不要更改這些選項。
·最后,設置所有的 EXECUTE(執行)權限后,單擊 OK(確定)按鈕,保存更改并關閉對話框。依次單擊 OK(確定)按鈕,直到所有對話框均被關閉。

至此,您已為 IIS 創建了自定義用戶,并設置了該用戶在 SQL Server 中的相應權限。現在,您需要在 ASP.NET Web 項目中進行一個配置更改,確保 ASP.NET 使用同一個用戶帳戶執行對 SQL Server 的所有調用。

設置您的 ASP.NET 應用程序以模擬 DotNetKB 用戶

為 IIS 下運行的 ASP.NET Web 應用程序生成堅實可靠的配置的最后一個步驟是:配置 ASP.NET Web 應用程序,使之能夠接受來自 IIS 的 Windows 用戶標識并能用于訪問其他操作系統資源。為此,您只需在 web.config 根文件中輸入一行代碼。

修改后的 web.config 文件如下所示:

      ... 其他要素 ...         ... 其他要素 ...  

請注意,您只需添加 元素并將模擬特性設置為 true(真)。不必輸入用戶帳戶或密碼,因為這些信息將由 IIS 提供。也就是說,即使其他人能夠讀取您的配置文件,他們也無法確定使用哪些標識憑據來執行您的 Web 應用程序。

至此,您已生成了自定義用戶,并為其設置了訪問 SQL Server 和 IIS 的相應權限。在下一篇《創建 ASP.NET 測試頁》中,我們來創建一些測試頁,確保它能夠正常工作。從這里您可以看出一切正常。

(責任編輯:戰瑩)

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗