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

GvS*_*GvS 72 asp.net-mvc-3 glimpse

我最近在我的项目中添加了Glimpse Debugger包.这增加了对Glimpse dll的引用,并修改了一些Web.Config.

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

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

我担心的东西包括:

  • 性能
  • 安全漏洞

Nic*_*cht 105

我相信如果找不到Glimpse的cookie,它就不会加载或做任何事情,所以性能应该可以忽略不计.安全方面,您可以在web.config中设置用户限制以获取一瞥路径的位置.

<location path="Glimpse.axd" >
    <system.web>
        <authorization>
            <allow users="Administrator" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

或者,如果存在管理员角色,则可以按角色而不是用户名来执行.

如果您不想仅仅依赖cookie的存在,也可以将其关闭.这很容易通过web.config转换实现,我还没有测试过标记,但是这样的东西应该可行.

<glimpse enabled="false" xdt:Transform="SetAttributes">
</glimpse>
Run Code Online (Sandbox Code Playgroud)

更新:Glimpse最近看到了一些变化(从1.0开始我认为?),现在变换看起来如下.尝试设置enabled属性将在最新版本的Glimpse中给出配置错误.

<glimpse defaultRuntimePolicy="Off" xdt:Transform="SetAttributes">
</glimpse>
Run Code Online (Sandbox Code Playgroud)

正如文件所说......

使用Http响应时,永远不会允许Glimpse做更多的事情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; }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,策略用于确定何时应运行glimpse,但它们不会阻止用户启动glimpse.axd页面.cookie仍然可以从我所知道的内容中启用,但如果尽管存在cookie,一瞥拒绝运行,cookie也毫无意义.话虽如此,仍然建议使用web.config中的位置标记将glimpse.axd页面包装在授权检查中.请注意,这是对GlimpseSecurityPolicy上述内容的补充.

<location path="glimpse.axd">
  <system.web>
    <authorization>
      <allow roles="Glimpse" />
      <deny users="*" />
    </authorization>
  </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

  • VS2010能够为您的web.config文件创建所谓的"转换文件".这些都是在构建时在web.config文件上运行的,以便根据所使用的构建配置对其进行修改以准备目标部署.例如,如果您处于发布模式,它将应用web.release.config文件中的转换.要获取这些文件,只需右键单击web.config并选择"添加配置转换".有许多教程可以解释这些文件的工作方式以及要使用的语法.http://msdn.microsoft.com/en-us/library/dd465326.aspx (3认同)

ant*_*nyv 9

Yarx在各方面都是正确的.

从安全角度来看,您可以使用所描述的方法锁定路径.唯一的问题是,有更多的URL端点可以使用,因此规则需要类似*Glimpse/*(其中*表示任何东西都可以在它之前,任何东西都可以在它之后).一旦这个到位,一瞥就应该被锁定.

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