對於針對SQL Server我的asp.net web應用程序(至少需要登錄訪問的那些)我一般實行安全如下:SQL Server和asp.net應用程序的安全模式/最佳實踐
我一般滾動我自己的用戶註冊,用戶登錄頁面,並保留一個用戶ID和一個加密的密碼在SQL服務器和驗證登錄對該表 - 我還提供了忘記密碼,'給我我的密碼',電子郵件驗證激活帳戶等所有通過自定義代碼。
一旦用戶通過了應用程序驗證(並假設所有用戶都具有相同的權限),我通常會使用實用程序logonid讓asp.net與sql server進行通信,換句話說,我只需要爲每個應用程序創建一個登錄ID,並且由於所有數據訪問的100%都是通過存儲過程完成的,因此我只需將訪問權限授予單個用戶即可執行存儲過程,並且在SQL Server上不需要其他工作。每個應用程序都有自己的數據庫,並且該應用程序的登錄只能訪問該數據庫。
所有這些對我來說都非常好,唯一的負面影響就是能夠在sql server中設置跟蹤並查看正在調用的userid和proc,但由於所有用戶都是通過單個數據庫登錄「通話」到數據庫,這不會發生。
所以,問題的兩個部分:
1)是否有安全模型是您使用我應該考慮的鄉親?它很容易總是做同樣的事情 - 特別是因爲它的工作原理 - 但有沒有其他模式可以更好地工作或我應該考慮?建議的做法是,所有來自asp.net應用程序的數據庫訪問都將共享一個數據庫登錄名?或者這被認爲是不好的做法?如果是這樣,爲什麼?
2)假設我堅持使用我的模型,是否有辦法允許在sql trace窗口中看到應用程序登錄ID?很高興看到sp被調用,並且登錄到系統的用戶的用戶標識(而不是數據庫登錄)。
>> ou可以修改您的存儲過程以接受用戶ID作爲參數。 我認爲這是爲未來的項目,但不是已經存在的代碼庫。 – 2009-01-14 16:07:10