2011-04-21 6 views
72

저는 최근에 내 프로젝트에 Glimpse Debugger 패키지를 추가했습니다. 이것은 Glimpse dll에 대한 참조를 추가하고 일부 Web.Config를 수정했습니다.프로덕션 사이트에 대한 정보를 배포해야합니까?

저는 개발과 프로덕션 환경에서 최대한 동일한 프로젝트를 좋아합니다.

엿볼을 제작 현장에 배포하는 것이 현명한 방법입니까, 아니면 다른 프로젝트를 만들거나 (내 csproj 파일에서 분기 만들기) 로컬로만 유지해야합니까? 내가 걱정

물건은 다음과 같습니다

  • 성능
  • 보안
+1

업데이트로 조금 전에 새로운 updaet을 출시했습니다. 더 많은 사용자 정의 논리를 사용하여 작업을 잠글 수 있습니다. http://blog.getglimpse.com/2013/12/09/protect- 엿볼 - axd -와 - 사용자 정의 런타임 정책/ – anthonyv

답변

103

내가 엿볼의 쿠키가 발견되지 않는 경우는로드 정도 아무것도하지 않는 생각 위반 성능은 무시할 수 있어야합니다. 보안상의 이유로 엿볼 수있는 경로의 위치를 ​​web.config에 사용자 제한으로 설정할 수 있습니다.

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

관리자 역할이있는 경우 사용자 이름 대신 역할로 수행 할 수 있습니다.

쿠키 존재에만 의존하고 싶지 않으면 스위치를 끌 수도 있습니다. 이것은 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. 또한 인증 제한을 추가하는 데 사용할 수있는 Nuget을 사용하여 Glimpse를 설치할 때 포함되는 GlimpseSecurityPolicy이라는 샘플 클래스가 있습니다.

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 페이지를 표시 할 수있는에서 사용자를 방지하지 않습니다.쿠키는 내가 무엇을 말할 수 있는지에 따라 여전히 활성화 될 수 있지만 쿠키가 존재 함에도 불구하고 흘끗 보임을 거부하면 쿠키는 의미가 없습니다. 즉, web.config의 location 태그를 사용하여 권한 확인에서 glixse.axd 페이지를 래핑하는 것이 좋습니다. 위의 내용은 GlimpseSecurityPolicy에 추가 된 것입니다.

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

안녕하세요 Yarx, web.config이 줄에 어디 가는지 말해 줄 수 있습니까? phreak3eb

+3

VS2010은 web.config 파일에 대해 "변형 파일"을 만드는 기능이 있습니다. 그리고 이들은 빌드 타임에 web.config 파일에서 실행되어 사용 된 빌드 구성을 기반으로 대상 배포를 준비하기 위해 수정됩니다. 예를 들어, 릴리스 모드에 있으면 web.release.config 파일의 변환이 적용됩니다. 이 파일을 얻으려면 web.config를 마우스 오른쪽 버튼으로 클릭하고'Add Config Transforms'를 선택하십시오.이 파일의 작동 방식과 사용할 구문을 설명하는 많은 자습서가 있습니다. http://msdn.microsoft.com/en-us/library/dd465326.aspx –

+0

'Glimpse/Config'가'Glimpse.axd'로 대체되었습니다. – ckittel

9

야록스는 거의 모든면에서 적합합니다.

보안 관점에서 설명 된 방법을 사용하여 경로를 잠글 수 있습니다. 단지 URL 엔드 포인트가 더 많이 사용되기 때문에 규칙은 *Glimpse/*과 같을 필요가 있습니다 (*는 무엇이든 그 앞에 올 수 있고 그 뒤에 오는 것이 올 수 있다고 말합니다). 일단 이것이 자리 잡게되면, 엿볼은 꽤 잠겨 야합니다.

또한 구성에서 Yarx가 제공 한 변환을 사용하면 쿠키가 켜져 있어도 언뜻보기에는로드되지 않습니다.

+0

'* Glimpse/*'는 경로 속성'에 허용되지 않습니다. path 속성은 상대적인 가상 경로 여야합니다. '?'중 하나를 포함 할 수 없습니다. ':' ''\ ''* '' '' '' '<' '>'또는 '|'.' 그래서 어디에 넣어야합니까? – Peter

0

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을 참조하십시오.

관련 문제