我最近在我的項目中添加了Glimpse Debugger包。這添加了對Glimpse dll的引用,並修改了一些Web.Config。我應該將Glimpse部署到生產站點嗎?
我喜歡我的項目儘可能在我的開發和生產環境相同。
因此,將Glimpse部署到我的生產站點,還是應該創建一個不同的項目(或從我的csproj文件創建分支)以保持它只在本地?
的東西,我很擔心包括:
- 性能
- 安全漏洞
我最近在我的項目中添加了Glimpse Debugger包。這添加了對Glimpse dll的引用,並修改了一些Web.Config。我應該將Glimpse部署到生產站點嗎?
我喜歡我的項目儘可能在我的開發和生產環境相同。
因此,將Glimpse部署到我的生產站點,還是應該創建一個不同的項目(或從我的csproj文件創建分支)以保持它只在本地?
的東西,我很擔心包括:
我相信如果掠影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>
嗨Yarx,你能告訴我在web.config這行裏去了嗎?
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
請注意,'Glimpse/Config'已被替換爲'Glimpse.axd'。 – ckittel 2011-08-23 21:22:47
Yarx幾乎所有的戰線都是正確的。
從安全角度來看,您可以使用所描述的方法鎖定路徑。唯一的問題是,可以看到更多的URL端點,因此規則需要像*Glimpse/*
(其中*表示任何事物都可以在它之前出現,任何東西都可以在它之後出現)。一旦到位,瞥見應該被鎖定。
另外,如果在配置中,您使用了Yarx提供的轉換,即使您啓用了cookie,glimpse也不會加載。
'* Glimpse/*'不允許在路徑屬性'
從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。
作爲對此的更新,我們剛剛發佈了一個新的updaet,它允許您使用更多自定義邏輯來鎖定事物 - http://blog.getglimpse.com/2013/12/09/protect- glimpse-axd-with-your-custom-runtime-policy/ – anthonyv 2014-02-15 21:41:53