ASP.NET의 인가 문제를 프로그래밍 방식으로 확인

기술 자료 번역 기술 자료 번역
기술 자료: 887459 - 이 문서가 적용되는 제품 보기.

고지 사항

Microsoft 기술 자료에서 제공하는 정보는 어떠한 보증도 없이 "있는 그대로" 제공됩니다. Microsoft는 시장성과 특정 목적에 대한 적합성의 보증을 포함하여 명시적이거나 묵시적인 모든 보증을 부인합니다. Microsoft 또는 그 공급자는 모든 파생적, 부수적, 직접, 간접, 특별 또는 영업이익의 손실을 포함한 모든 손해에 대해 어떠한 경우에도 책임을 지지 않으며, 이는 Microsoft가 그와 같은 손해의 가능성을 사전에 알고 있던 경우에도 마찬가지입니다. 일부 주에서는 파생적 손해나 부수적 손해에 대한 책임의 배제나 제한이 허용되지 않아 앞서 언급한 제한이 적용되지 않을 수도 있습니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.
모두 확대 | 모두 축소

이 페이지에서

소개

이 문서에서는 일반적인 인가 문제를 방지하기 위해 ASP.NET 응용 프로그램에 보호 기능을 추가하는 방법을 설명합니다.

추가 정보

인가란?

인가(Canonicalization)는 여러 가지 동등한 형태의 이름을 단일 표준 이름으로 확인하는 방법을 결정하는 프로세스입니다. 단일 표준 이름을 정식 이름이라고도 합니다. 예를 들어, 특정 컴퓨터에서 c:\dir\test.dat, test.dat 및 ..\..\test.dat는 모두 같은 파일을 나타낼 수 있습니다. 인가는 이러한 이름을 c:\dir\test.dat와 유사한 이름으로 매핑하는 프로세스입니다.

웹 서버에서 URL을 받으면 응답을 결정하는 파일 시스템 경로로 요청을 매핑합니다. 요청을 매핑하는 데 사용되는 인가 루틴에서는 예기치 않은 내용에 대한 서비스 제공이나 처리를 방지하기 위해 URL의 구문을 제대로 분석해야 합니다. 인가에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오.
http://msdn2.microsoft.com/en-us/library/aa302420.aspx
응용 프로그램을 보호하려면 최적의 보안 방법을 사용하는 것이 좋습니다. 자세한 내용은 다음 절을 참조하십시오.

웹 응용 프로그램에 인가 보호 기능 추가

Microsoft ASP.NET 개발자는 웹 응용 프로그램의 루트 디렉터리에 저장되어 있는 해당 Global.asax 파일에 Application_BeginRequest 이벤트 처리기를 추가하는 방법으로 확인 기능을 추가하여 웹 응용 프로그램에 대한 인가 문제를 줄일 수 있습니다. 이 이벤트 처리기는 웹 요청마다 실행되므로 이 이벤트 처리기에 인가 문제를 방지하기 위한 코드를 삽입하면 됩니다.

코드 예제

아래의 예제는 Global.asax 파일에 Application_BeginRequest 이벤트 처리기를 추가하는 방법을 보여 줍니다. 이 이벤트 처리기는 경로를 확인하여 잘못된 문자나 잘못된 형식의 URL을 방지하므로 일반 인가 문제를 방지할 수 있습니다.

Global.asax 코드 예제(Visual Basic .NET)

<script language="vb" runat="server">
Sub Application_BeginRequest(Sender as Object, E as EventArgs)
    If (Request.Path.IndexOf(chr(92)) >= 0 OR _
        System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then
        Throw New HttpException(404, "Not Found")
    End If
End Sub
</script>

Global.asax 코드 예제(C#)

<script language="C#" runat="server">
void Application_BeginRequest(object source, EventArgs e) {
    if (Request.Path.IndexOf('\\') >= 0 ||
        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {
        throw new HttpException(404, "not found");
    }
}
</script>

속성

기술 자료: 887459 - 마지막 검토: 2007년 12월 3일 월요일 - 수정: 2.5
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 서비스 팩 1
  • Microsoft .NET Framework 1.0 서비스 팩 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
키워드:?
kbsecurity kbtshoot KB887459

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com