2010-08-16 40 views
0

我正在使用ASP.NET 4.0,C#和IIS7的Web應用程序。 Web應用程序是定義多個用戶角色的內容管理系統,例如編輯器和管理員。這些用戶和角色由asp.net成員資格框架管理,關聯的數據庫表使用aspnet_regsql集成到Web應用程序的數據庫中。最後,Web應用程序在ApplicationPoolIdentity下運行。因此,Web應用程序在虛擬帳戶「IIS AppPool \」下運行,它不與任何其他應用程序共享。ASP.NET/IIS7 - 保護對多個用戶角色的SQL Server訪問

該網站的設計使得用戶帳戶由管理員發佈(沒有公共註冊頁面),儘管此詳細信息可能無關緊要。無論如何,管理員應該有權創建和刪除用戶並編輯站點上的任何內容。另一方面,編輯應該只能編輯網站的指定部分。最後,網站的匿名訪問者應該只能查看內容,而不能編輯。

問題是:在SQL Server數據庫中向IIS AppPool \虛擬帳戶授予讀寫訪問權限併爲Web應用程序的底層業務邏輯中的不同用戶角色提供功能會不安全?

我不這麼認爲,但由於數據完整性的必要性,我認爲徵求其他開發者的意見可能是一個好主意。

如果(且僅當)這會造成不可預見的安全風險,使用模擬,使用SQL身份驗證將web.config文件中的多個連接字符串存儲或在數據庫本身中跟蹤用戶權限是否更好? ?

回答

2

的問題是:難道是不安全 就這樣給讀寫 的MSSQL數據庫的IIS應用程序池\ 虛擬帳戶訪問,並在 基本商業邏輯給功能 給不同的用戶角色網絡 應用程序?

這就是通常的做法,對於大多數商業案例來說就足夠了。有在每個應用程序的不安全感,所以你必須盡你所能避免緩衝區溢出,腳本注入和SQL注入,擦洗你輸入等

如果(且僅當)這樣做造成的意外 安全風險,是否 更好的主意使用模擬, 存儲多個連接字符串在 web.config文件與SQL 身份驗證,或跟蹤用戶 權限在數據庫本身?

如果您使用Windows身份驗證,使用模擬並不少見,並且非常簡單。這是一個令人頭痛的行爲,因爲除了應用程序數據庫以外,還必須通過數據庫安全性添加用戶。多個連接字符串可能是這些方法中擴展性最差和最有利的,更不用說它會影響繁忙網站的性能。

相關問題