2012-10-16 5 views
0

http 및 https 포트가 활성화 된 IIS에 배포 된 ASP.Net 응용 프로그램을 구현했습니다. 이제 Web.Config 값을 기반으로 HTTP 요청을 거부해야한다는 요구 사항이 있습니다. 이 값을 True로 설정하면 오류가 발생하는 것처럼 HTTP가 포함 된 요청을 허용해서는 안됩니다. Invalid Operation.. Try requesting with Secure connection. 내가 한 첫 번째 일은 다음과 같이 Global.asax 파일에서이 문제를 확인하는 것입니다 : 내가 예외 request is not available in this context있어이 방법구성 값에 대한 웹 사이트 기반의 Http 요청 방지

if (Utilities.Utility.HttpsCheck) 
    { 
     if (!Request.IsSecureConnection) 
     { 
      Response.Write("Invalid Operation"); 
     } 
    } 

. 나는이 오류에 대해 봤어 그리고 Request ASP.NET에서 글로벌 파일에 액세스 할 수 없다는 것을 알고있어.

다음 방법은 위의 코드를 프로젝트의 모든 페이지에 추가하고 요청을 처리하기 전에 확인하는 것입니다. 하지만 이런 식으로하면 HTML 페이지에 대한 요청을 막을 수 없으며,이 파일들도 제한해야 할 프로젝트의 HTML 페이지가 있습니다.

페이지에 현명한 코드가 포함되어있는 경우 해당 페이지 만 적용됩니다 ..하지만 웹 사이트에서도 일부 이미지/비디오 파일을 제한해야합니다.

더 좋은 방법이 있습니까? 이 점에 대해 제발 도와주세요. 사전에

감사합니다.

+0

왜 IIS에서 http 바인딩을 제거하지 않습니까? –

+0

http://stackoverflow.com/questions/47089/best-way-in-asp-net-to-force-https-for-an-entire-site – adt

+0

@JonEgerton - 예 IIS에서 Http 바인딩을 제거 할 수 있습니다. 하지만 몇 번 내가이 HTTP 액세스를 활성화해야합니다 .. 그 이유는 오히려 때마다 IIS 구성을 변경하는 코드 기반의 솔루션을 확인 오전 .. – Mohan

답변

0

나는 내 구성 값에 대한 내 웹 사이트의 HTTP 액세스를 제한하기 위해 HTTP 모듈을 구현했습니다. 이것을 사용하여 이미지 파일과 HTML 페이지에 대한 HTPP 액세스를 제한 할 수도 있습니다. 다음은 나의 모듈 코드입니다 :

public void Init(HttpApplication context) 
     { 
      context.BeginRequest += new EventHandler(context_BeginRequest); 
     } 

     public void context_BeginRequest(Object source, EventArgs e) 
     { 
      //Code to reject the HTTP requests on basis of Config Value 
      HttpApplication application = (HttpApplication)source; 
      HttpContext context = application.Context; 

      if (context != null) 
      { 
       if (Utilities.Utility.HttpsCheck) 
       { 
        if (!context.Request.IsSecureConnection) 
        { 
         context.Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest; 
         context.Response.StatusDescription = "Secure connetion required"; 
         context.Response.End(); 
        } 
       } 
      } 
     } 
0

https 만 허용하도록 IIS를 구성 할 수 있습니다. HTTP 요청은 자동으로 리디렉션됩니다. 다음은 IIS를 구성하는 방법의 예입니다. http://support.microsoft.com/kb/324069

희망이

0

아주 간단한 방법은 페이지 클래스를 서브 클래 싱과 서브 클래 싱 된 페이지에서 조건문을 적용하는 데 도움이됩니다. 제한된 하위 클래스와 그렇지 않은 하위 클래스가있을 수 있습니다. 제한된 페이지는 웹 구성 매개 변수의 값에 액세스하고 필요에 따라 리디렉션 할 수 있습니다.

public class HttpsPage : Page { 


protected override void OnLoad(..) 
{ 
if (Utilities.Utility.HttpsCheck) 
    { 
     if (!Request.IsSecureConnection) 
     { 
      Response.Redirect(your-url); 
     } 
    } 
} 
} 

너무 거친 것 같습니다. 그것은 당신의 질문에 대한 코드 기반의 답변이지만 "정확한"요구 사항에 따라 20 가지 더 좋은 방법이 있습니다.

당신이하고있는 일에 대해 확신이 서지 않는다면 솔직히 말해서 ID는 웹에 보안 소켓이 필요하다고 느끼는 것에 대해 매우 신중하게 생각합니다. 특히 퍼팅하는 것이 있다면 네가 아니야.

+0

답장을 보내 주셔서 감사합니다 .. 이것은 이미 구현했지만 이것은 완벽하게 aspx 페이지에 대한 작동합니다. 하지만 내 html 페이지에 대한 액세스 제한에 대해 내 웹 응용 프로그램에서도 일부 html 페이지가 있습니까? – Mohan

관련 문제