1

우리는 사용자 인증을 위해 폼 인증을 사용하고 있습니다. 우리의 응용 프로그램에는 exe를 다운로드 할 수있는 페이지가 있습니다.익명 사용자가 폼 인증을 사용하여 파일에 액세스하는 것을 방지하려면 어떻게해야합니까?

Visual Studio에서 코드를 디버깅 할 때 로그인 한 사용자 만 파일을 다운로드 할 수 있습니다. 다른 사용자가 파일을 다운로드하려고하면 자동으로 로그인 페이지로 리디렉션됩니다.

그러나이 파일을 가상 디렉터리에서 실행할 때 로그인 한 모든 사용자는 http://testappln/foldername/test.exe과 같은 직접 경로를 통해 파일을 다운로드 할 수 있습니다.

이 상황에서 권한이없는 사용자의 액세스를 방지하려면 어떻게해야합니까?

+0

사용중인 IIS 버전은 무엇입니까? IIS 7.0 이상을 사용하는 경우 기존 모드 또는 통합 모드로 실행하고 있습니까? 사용자가 브라우저에서 서버의'C : \ foldername \ test.exe'에 어떻게 접근 할 수 있습니까? –

+0

@DarinDimitrov : 죄송합니다 .. 나는 경로를 변경했습니다. :) –

+0

@DarinDimitrov : IIS5.1 –

답변

3

직접 액세스가 금지 된 App_Data 폴더 안에 파일을 넣은 다음 일반 ASHX 처리기를 사용하여 파일의 내용을 읽고이를 클라이언트에 반환 할 수 있습니다.

<%@ WebHandler Language="C#" Class="Download" %> 

using System; 
using System.Web; 

public class Download : IHttpHandler 
{ 
    public void ProcessRequest (HttpContext context) 
    { 
     context.Response.ContentType = "application/octet-stream"; 
     context.Response.WriteFile("~/App_Data/test.exe"); 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

을 당신의 Web.config에 당신은 Download.ashx 핸들러에 대한 액세스 제한 : 그럼 당신은 인증 된 사용자 만이 일반 핸들러에 대한 액세스를 제한 할 수

<location path="Download.ashx"> 
    <system.web> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 
</location> 
+0

javacript window.open ('http : //testappln/foldername/test.exe')에서 이와 같은 파일을 다운로드하는 경우, , '다운로드'),이 사건을 어떻게 처리 할 수 ​​있습니까? –

+0

@mahesh, 이렇게 :'window.open ('download.ashx', 'Download');'. –

1

아주 간단한 방법이하는 것입니다 IIS를 사용하여 폴더에 대한 익명 액세스를 방지하십시오. IIS를 열려면 사이트를 선택하고 보안을 설정할 폴더를 선택하십시오. 폴더를 선택한 후 인증 페이지에서 인증 (IIS 섹션에서)을 두 번 클릭하여 익명 인증을 비활성화하십시오. 이제 사이트 인증 사용자 만 선택한 폴더에 액세스 할 수 있습니다.

관련 문제