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

來源:互聯網
上載者:User
目錄:
定義 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 檔案如下所示:


<configuration>  <system.web>    ... 其他要素 ...    <identity impersonate="true"/> <!-- 假設 IIS 使用者標識 -->    ... 其他要素 ...  </system.web></configuration>

請注意,您只需添加 元素並將類比特性設定為 true(真)。不必輸入使用者帳戶或密碼,因為這些資訊將由 IIS 提供。也就是說,即使其他人能夠讀取您的設定檔,他們也無法確定使用哪些標識憑據來執行您的 Web 應用程式。

至此,您已產生了自訂使用者,並為其設定了訪問 SQL Server 和 IIS 的相應許可權。在下一篇《建立 ASP.NET 測試頁》中,我們來建立一些測試頁,確保它能夠正常工作。從這裡您可以看出一切正常。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.