我最近在我的项目中添加了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