2010-05-06 48 views
2

我正在考慮爲ASP.NET應用創建一個診斷頁面,這個頁面主要供管理員使用,以獲取有關診斷問題的應用程序的更多信息。該信息的ASP.NET診斷的安全頁面

例子的頁面可能有:

  • System.Environment.MachineName(可能在Web場情況下非常有用)
  • System.Environment.Version
  • Environment.UserName
  • 數據庫名稱
  • 當前用戶會話ID

從安全角度來看,此頁面上的部分信息可能會很敏感。 如果您之前已經完成了這種頁面,您對此頁面的訪問權限是什麼樣的? 。

編輯:

我要補充 - 雖然偶爾登錄的一個特定的(即真實)的最終用戶,可能是有用的,看到這個頁面。例如說一個問題只有在以特定用戶身份登錄時才能被複制。能夠看到該用戶的診斷頁面可能很有用。例如知道當前的會話ID可能對調試有幫助。

編輯2:

我開始認爲這個診斷頁面其實應該是兩個不同的網頁。一個顯示所有用戶相同的東西(例如數據庫名稱,CLR版本),另一個顯示會因會話而異的東西(例如瀏覽器信息,會話ID)。 然後,您可以鎖定第一頁的安全性。

回答

2

是的,我在之前添加了這種頁面(並且發現它很有用)。安全性非常簡單:頁面包含密碼錶單。服務器端代碼根據配置的值檢查此密碼,如果正確,則顯示真實內容並在用戶會話中設置一個值,表示它們已經通過開發人員身份驗證,以便它們不會再次被提示時間。

我想通過默默無聞也有一點安全性,因爲該頁面的URL沒有在任何地方發佈。

我也小心不要在網頁上顯示任何東西真的敏感。例如,它允許查看我們的應用程序配置值,但屏蔽了其中包含「密碼」的任何內容 - 嘿,如果我們真的想看到密碼,我們可以打開遠程桌面會話到服務器。

1

還有幾個其他的方式,你可以這樣做:

  • 如果你的web應用程序的用戶身份驗證,通過檢查用戶標記爲管理員或屬於某些限制訪問此頁有種管理角色。

  • 使用簡單的if (Request.IsLocal) ...類型檢查,儘管其缺點是您仍然必須連接到服務器並在本地瀏覽網站 - 這可能並不總是可能的。但是,這仍然有能夠輕鬆查看關鍵系統設置的好處。

就個人而言,我使用了兩種方法的組合,其中本地請求始終允許訪問,非本地請求需要管理員用戶 - 例如。 if (!Request.IsLocal && !IsAdminUser()) throw new SecurityException()

此外,我與Evgeny達成協議 - 注意不要在此頁面上顯示任何東西真的敏感(如應用程序連接字符串或密碼)。

0

使用表單身份驗證並設置一個或兩個訪問該頁面的用戶。這樣,您可以在部署網站後更改密碼並撤銷訪問權限。

0

這聽起來像你想要一個強大的解決方案,爲您的錯誤頁面。我會看看像Elmah這樣的開源項目(http://code.google.com/p/elmah/),這是一個包含可配置安全性的健壯錯誤頁面的好例子。爲了給你一個想法,這裏有一個關於配置Elmah的post,它可以幫助你設置安全性。我測試過的安全性允許我使用我的域憑據登錄。