문제

web.config에 다음을 가지고 있다고 가정 해 봅시다 :

<allow roles="Developers" />
<deny users="*"/>

이는 .aspx, .AMSX 및 기타 .NET 파일 유형에서 액세스를 잠그지 만 여전히 무단 사용자가 image.jpg와 같은 정적 파일을 열 수있게 해줍니다. 누군가가 image.jpg (.NET 유형이 아니며 IIS를 우회 할 수 있음)를 요청할 때 Web.Config가 권한 정보를 요구하지 않는 이유를 이해하지만 전체 응용 프로그램을 어떻게 잠글 수 있습니까?

온라인에서 찾은 조언에는 다음이 포함됩니다.

  • a <location> 문제의 디렉토리에 대한 항목 및 IIS / .NET가 픽업됩니다. (그렇지 않은 것 같다.)
  • 자신의 ISAPI 필터를 작성하고 모든 민감한 파일의 확장을 매핑해야합니다.
  • 자신의 ISAPI 필터를 작성할 필요는 없습니다. 확장을 ASPNET_ISAPI.DLL에 매핑하면 수행합니다.
  • IIS를 전혀 편집 할 필요가 없으며 확장자에 대한 web.config에서 httphandler 항목 만 작성하십시오. (나는 실제로 응용 프로그램의 모든 확장에 대해 이것을 시도하지 않습니다.)

이 중 어느 것도 내가 아파치에 있다는 것을 기억하는 것만 큼 쉽게 작동하지 않습니다. 방문자에게 비밀번호를 요청하고 파일이없는 사용자에게 파일 (정적 여부)을 제공하지 않는 가장 간단한 것은 무엇입니까?

도움이 되었습니까?

해결책

할 수 있게 하다 IIS 6에 대한 와일드 카드 매핑. 이렇게하면 ASP.NET 파이프 라인을 통해 모든 파일을 보내며 모든 파일에 대한 보증 양식 인증이 발생합니다. 성능을 저하시킵니다 (Dunno).

IIS 5의 경우 UM의 경우 IIS 6으로 업그레이드합니다.

4 가지 아이디어를 나열합니다.

  • 위치는 와일드 카드 매핑이있는 경우에만 작동합니다 (또는 특정 확장 맵핑).

  • 누가 ISAPI 필터를 쓰고 싶어합니까? IIS7이 없다면 관리하는 langauges에서 쉽게 할 수 없습니다. 그리고 누가 C ++ ISAPI 필터를 작성하고 싶습니까?

  • 와일드 카드 매핑은 위의 경고 (성능)에서 작동합니다.

  • 다시 말하지만, 마지막 옵션은 IIS에 특정 확장을 등록하지 않고 ASPNet을 통해 라우팅하지 않으면 작동하지 않습니다.

다른 팁

간단한 방법은 IIS 7으로 업그레이드하는 것입니다. 이제 통합 파이프 라인이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top