我应该将Glimpse部署到生产站点吗?
我最近添加了Glimpsedebugging器包到我的项目。 这添加了对Glimpse dll的引用,并修改了一些Web.Config。
在开发和生产环境中,我尽可能地喜欢我的项目。
那么将Glimpse部署到我的生产站点还是应该保存/明智的,还是应该创build一个不同的项目(或者从我的csproj文件创build分支)来保持它只在本地?
我担心的东西包括:
- 性能
- 安全漏洞
我相信,如果没有findGlimpse的cookie,它不会加载或做任何事情,所以性能应该可以忽略不计。 安全明智的,你可以在web.config中设置一个用户限制的瞥见path的位置。
<location path="Glimpse.axd" > <system.web> <authorization> <allow users="Administrator" /> <deny users="*" /> </authorization> </system.web> </location>
或者如果有一个pipe理员angular色,你可以通过angular色而不是用户名来完成。
如果您不想只依赖cookie的存在,也可以将其closures。 这很容易通过web.config实现转换,我还没有testing标记,但这样的事情应该工作。
<glimpse enabled="false" xdt:Transform="SetAttributes"> </glimpse>
更新 :最近看到一些变化,并且(从1.0我相信?)变换现在看起来如下。 尝试设置enabled
属性会在最新版本的Glimpse中出现configuration错误。
<glimpse defaultRuntimePolicy="Off" xdt:Transform="SetAttributes"> </glimpse>
正如文件所说…
Glimpse永远不会被允许使用比
DefaultRuntimePolicy
指定的Http响应更多的function。
应该指出的是,这个转换的唯一目的就是如果你想删除使用Glimpse作为你的部署过程的一部分的能力。 如果您想根据其他条件(如远程请求或授权检查)有条件地禁用它,则通过策略可以更好地完成这些操作。 Glimpse基于一系列政策(全部基于IRuntimePolicy
),旨在帮助确定什么时候应该允许这样做。 实际上,一旦安装了Glimpse,如果您导航到该页面底部的glimpse.axd,您将看到当前启用的策略列表。 例如防止远程请求访问的LocalPolicy
(可configuration地,可以通过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是没有意义的。 话虽如此,仍然build议使用web.config中的位置标记在授权检查中包装glimpse.axd页面。 请注意,这是上面的GlimpseSecurityPolicy
。
<location path="glimpse.axd"> <system.web> <authorization> <allow roles="Glimpse" /> <deny users="*" /> </authorization> </system.web> </location>
Yarx在几乎所有方面都是正确的。
从安全angular度来看,您可以使用所描述的方法lockingpath。 唯一的事情是,有更多的URL可以被窥见,所以规则需要像*Glimpse/*
(其中*表示任何东西都可以在它之前出现,任何东西都可以在它之后出现)。 一旦到位,一瞥应该被locking。
另外,如果在configuration中使用了Yarx提供的转换,即使启用了cookie,glimpse也不会加载。
从Glimpse 1.7开始,有一个更通用的方法来保证~/glimpse.axd
的额外好处, ~/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
| RuntimeEvent.ExecuteResource
。 见底部: 确保Glimpse.axd前进的道路 。