2011-04-21 24 views
72

我最近在我的項目中添加了Glimpse Debugger包。這添加了對Glimpse dll的引用,並修改了一些Web.Config。我應該將Glimpse部署到生產站點嗎?

我喜歡我的項目儘可能在我的開發和生產環境相同。

因此,將Glimpse部署到我的生產站點,還是應該創建一個不同的項目(或從我的csproj文件創建分支)以保持它只在本地?

的東西,我很擔心包括:

  • 性能
  • 安全漏洞
+1

作爲對此的更新,我們剛剛發佈了一個新的updaet,它允許您使用更多自定義邏輯來鎖定事物 - http://blog.getglimpse.com/2013/12/09/protect- glimpse-axd-with-your-custom-runtime-policy/ – anthonyv 2014-02-15 21:41:53

回答

103

我相信如果掠影cookie不會發現它不加載或做任何事情使性能應該可以忽略不計。安全明智的是,您可以在web.config中設置用戶限制以查看瞥見路徑的位置。

<location path="Glimpse.axd" > 
    <system.web> 
     <authorization> 
      <allow users="Administrator" /> 
      <deny users="*" /> 
     </authorization> 
    </system.web> 
</location> 

或者如果有管理員角色,您可以通過角色而不是用戶名來完成。

如果您不想只依賴cookie的存在,也可以將其關閉。這很容易通過web.config實現轉換,我還沒有測試標記,但這樣的事情應該工作。

<glimpse enabled="false" xdt:Transform="SetAttributes"> 
</glimpse> 

UPDATE:掠影最近出現了一些變化和(自1.0我相信?)變換現在看起來如下。試圖設置enabled屬性會在最新版本的Glimpse中出現配置錯誤。

<glimpse defaultRuntimePolicy="Off" xdt:Transform="SetAttributes"> 
</glimpse> 

由於文檔所說的那樣......

掠影永遠不會被允許在指定的DefaultRuntimePolicy比 HTTP響應做多。

應該指出的是,這個轉換服務的唯一目的是如果你想刪除在部署過程中使用Glimpse的能力。如果您想根據其他條件(如遠程請求或授權檢查)有條件地禁用它,則通過策略可以更好地完成這些操作。 Glimpse基於現在的一系列政策(全部基於IRuntimePolicy),旨在幫助確定何時應該允許一瞥。實際上,一旦安裝了Glimpse,如果您導航到該頁面底部的glimpse.axd,您將看到當前啓用的策略列表。例如LocalPolicy,它阻止它被遠程請求訪問(可配置地,任何策略可以通過web.config忽略以允許遠程請求)http://getglimpse.com/Help/Configuration。他們還有一個名爲GlimpseSecurityPolicy的示例類,當您使用Nuget安裝Glimpse時會包含該類,您可以使用它來添加授權限制。

public class GlimpseSecurityPolicy:IRuntimePolicy 
{ 
    public RuntimePolicy Execute(IRuntimePolicyContext policyContext) 
    { 
     // You can perform a check like the one below to control Glimpse's permissions within your application. 
     // More information about RuntimePolicies can be found at http://getglimpse.com/Help/Custom-Runtime-Policy 
     var httpContext = policyContext.GetHttpContext(); 
     if (httpContext.User != null && !httpContext.User.IsInRole("Glimpse")) //Once glimpse is turned on, you have to be a member of this Role to see the Glimpse Panel. 
     { 
      return RuntimePolicy.Off; 
     } 

     return RuntimePolicy.On; 
    } 

    public RuntimeEvent ExecuteOn 
    { 
     get { return RuntimeEvent.EndRequest; } 
    } 
} 

現在的策略用於確定何時一瞥應該運行,但他們不阻止用戶能夠調出glimpse.axd頁。Cookie仍然可以從我可以告訴的內容中啓用,但如果瀏覽器拒絕運行cookie,則cookie無意義,但Cookie無效。這就是說,建議使用web.config中的位置標記在授權檢查中封裝glimpse.axd頁面。請注意,除了上面的GlimpseSecurityPolicy之外。

<location path="glimpse.axd"> 
    <system.web> 
    <authorization> 
     <allow roles="Glimpse" /> 
     <deny users="*" /> 
    </authorization> 
    </system.web> 
</location> 
+0

嗨Yarx,你能告訴我在web.config這行裏去了嗎? phreak3eb 2011-04-22 15:16:24

+3

VS2010能夠爲您的web.config文件創建它所謂的「變形文件」。並且這些文件會在構建時在您的web.config文件中運行,以便根據所使用的構建配置對其進行修改,以便爲目標部署做準備。例如,如果您處於發佈模式,它會應用web.release.config文件中的轉換。要獲取這些文件,只需右鍵單擊web.config並選擇「添加配置轉換」有許多教程解釋這些文件的工作方式以及使用的語法。 http://msdn.microsoft.com/en-us/library/dd465326.aspx – 2011-04-26 16:04:33

+0

請注意,'Glimpse/Config'已被替換爲'Glimpse.axd'。 – ckittel 2011-08-23 21:22:47

9

Yarx幾乎所有的戰線都是正確的。

從安全角度來看,您可以使用所描述的方法鎖定路徑。唯一的問題是,可以看到更多的URL端點,因此規則需要像*Glimpse/*(其中*表示任何事物都可以在它之前出現,任何東西都可以在它之後出現)。一旦到位,瞥見應該被鎖定。

另外,如果在配置中,您使用了Yarx提供的轉換,即使您啓用了cookie,glimpse也不會加載。

+0

'* Glimpse/*'不允許在路徑屬性'中路徑屬性必須是相對虛擬路徑。它不能包含任何'?' ':''''''''''''<' '>'或'|'。'我應該放在哪裏?謝謝 – Peter 2014-03-07 11:59:18

0

從Glimpse 1.7開始,有一種更通用的方法來保護~/glimpse.axd,並具有爲所有人使用相同策略的額外好處。你只需要確保您的自定義策略被稱爲資源太:

public RuntimeEvent ExecuteOn 
{ 
    // The bit flag that signals to Glimpse that it should run on either event 
    get { return RuntimeEvent.Endrequest | RuntimeEvent.ExecuteResource; } 
} 

通知的| RuntimeEvent.ExecuteResource。見底部:Securing Glimpse.axd the way forward