我应该将 Glimpse 部署到生产站点吗?

我最近将 Glimpse Debugger 包添加到我的项目中。这添加了对 Glimpse dll 的引用,并修改了一些 Web。配置。

在我的开发和生产环境中,我尽可能地喜欢我的项目。

那么,将 Glimpse 部署到我的生产站点是保存/明智的做法,还是应该创建一个不同的项目(或者从 csproj 文件创建一个分支)来只在本地保存它?

我担心的事情包括:

  • 表演
  • 数字证书认证机构
13442 次浏览

我相信如果没有找到 Glimpse 的 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>

更新 : Glimpse 最近发生了一些变化(我相信是从1.0开始的?)转换现在看起来如下。尝试设置 enabled属性将在最新版本的 Glimpse 中出现配置错误。

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

根据文件记载..。

Glimpse 将永远不会被允许使用 Http 响应做比现在更多的事情 在 DefaultRuntimePolicy中指定。

应该注意的是,此转换的唯一用途是,如果您想删除将 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; }
}
}

现在,这些策略用于确定应该在何时运行瞥视,但是它们不会阻止用户打开瞥视.axd 页面。据我所知,cookie 仍然可以启用,但是如果在 cookie 存在的情况下仍然拒绝运行 cookie,那么 cookie 就没有意义了。尽管如此,使用 web.config 中的 location 标记在授权检查中包装瞥见.axd 页面仍然是明智的。注意,这是对上面的 GlimpseSecurityPolicy的补充。

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

Yarx 在几乎所有方面都是正确的。

从安全角度来看,您可以使用所描述的方法锁定路径。唯一的问题是,还有更多的 URL 端点可供浏览使用,所以规则需要类似于 *Glimpse/*(其中 * 表示任何东西都可以在它之前出现,任何东西都可以在它之后出现)。一旦这个位置就位,应该可以很好地锁定瞥一眼。

另外,如果在配置中使用了 Yarx 提供的转换,那么即使打开了 cookie,也不会加载。

从 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。参见: 保护 Glimpse.axd 前进方向的底部。