많은 수의 폼 키, 파일 또는 JSON 페이로드 멤버가 있는 ASP.NET 요청이 예외를 나타내며 실패함

기술 자료 번역 기술 자료 번역
기술 자료: 2661403 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

Microsoft 보안 업데이트 MS11-100은 HTTP 요청에서 폼 키, 파일 및 JSON 멤버의 최대 수를 1000개로 제한합니다. 이러한 변경 내용 때문에 ASP.NET 응용 프로그램은 이러한 요소가 1000개를 넘을 경우 요청을 거부합니다. 이러한 종류의 요청을 수행하는 HTTP 클라이언트는 거부되며 웹 브라우저에서 오류 메시지가 나타납니다. 이 오류 메시지는 일반적으로 HTTP 500 상태 코드를 포함합니다. 이러한 새로운 제한은 응용 프로그램 단위로 구성될 수 있습니다. 구성 지침에 대해서는 "해결 방법" 절을 참조하십시오.


현상

많은 수의 폼 키, 파일 또는 JSON 페이로드가 있는 ASP.NET 요청이 수행되면 서버에서 오류 응답이 수신됩니다. 서버의 응용 프로그램 로그는 특정 버전의 ASP.NET이 소스인 경고 항목과 이벤트 ID 1309를 포함합니다. 이벤트 로그에는 다음 메시지 중 하나가 포함됩니다.


메시지 1:
응용 프로그램 정보:
응용 프로그램 도메인: /LM/W3SVC/1/ROOT/<App Domain>
신뢰 수준: 보통
응용 프로그램 가상 경로: <VDIR 경로>
응용 프로그램 경로: <응용 프로그램 경로>
시스템 이름: <시스템 이름>
프로세스 정보:
프로세스 ID: 0001
프로세스 이름: w3wp.exe
계정 이름: IIS APPPOOL\DefaultAppPool

예외 정보:
예외 유형: HttpException
예외 메시지: URL로 인코딩된 폼 데이터가 잘못되었습니다.
at System.Web.HttpRequest.FillInFormCollection()
at System.Web.HttpRequest.get_Form()
at System.Web.HttpRequest.get_HasForm()
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
at System.Web.UI.Page.DeterminePostBackMode()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


메시지 2:
응용 프로그램 정보:
응용 프로그램 도메인: /LM/W3SVC/1/ROOT/<App Domain>
신뢰 수준: 보통
응용 프로그램 가상 경로: <VDIR 경로>
응용 프로그램 경로: <응용 프로그램 경로>
시스템 이름: <시스템 이름>

프로세스 정보:
프로세스 ID: 0001
프로세스 이름: w3wp.exe
계정 이름: IIS APPPOOL\DefaultAppPool

예외 정보:
예외 유형: InvalidOperationException
예외 메시지: 개체의 현재 상태 때문에 작업이 유효하지 않습니다.
at System.Web.HttpRequest.FillInFilesCollection()
at System.Web.HttpRequest.get_Files()
at FileUpload.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

메시지 3:
응용 프로그램 정보:
응용 프로그램 도메인: /LM/W3SVC/1/ROOT/<App Domain>
신뢰 수준: 보통
응용 프로그램 가상 경로: <VDIR 경로>
응용 프로그램 경로: <응용 프로그램 경로>
시스템 이름: <시스템 이름>

프로세스 정보:
프로세스 ID: 0001
프로세스 이름: w3wp.exe
계정 이름: IIS APPPOOL\DefaultAppPool

예외 정보:
예외 유형: InvalidOperationException
예외 메시지: 개체의 현재 상태 때문에 작업이 유효하지 않습니다.
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
at System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
at Failing.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


IIS 로그 파일에는 다음과 유사한 항목이 표시됩니다.
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




원인

보안 공지 MS11-100에 나오는 Microsoft 보안 업데이트는 요청에서 ASP.NET이 수락하는 폼 키, 파일 및 JSON 멤버의 최대 기본 개수를 1,000으로 변경합니다. 이러한 변경은 Microsoft 보안 공지 MS11-100에 설명된 서비스 거부 취약성을 해결하기 위해 수행되었습니다.


해결 방법

폼 키 또는 파일에 대해 이러한 제한에 도달한 응용 프로그램은 ASP.NET 응용 프로그램 구성 파일에 표시된 것처럼 ASP.NET appSetting aspnet:MaxHttpCollectionKeys를 수정할 수 있습니다. 이 설정은 "현상" 절의 오류 메시지 1과 오류 메시지 2를 해결합니다.
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>


참고 x86 기반 시스템에서 ASP.NET 1.1을 사용하는 경우 다음 레지스트리 키에 DWORD 값을 추가하여 이 설정을 조정합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
x64 기반 시스템에서 ASP.NET 1.1을 사용하는 경우 다음 레지스트리 키에 DWORD 값을 추가하여 이 설정을 조정합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys



JSON 페이로드에 대해 이러한 제한에 도달한 응용 프로그램은 ASP.NET 응용 프로그램 구성 파일에 표시된 것처럼 ASP.NET appSetting aspnet:MaxJsonDeserializerMembers를 수정할 수 있습니다. 이 설정은 "현상" 절의 오류 메시지 3을 해결합니다.
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>



참고 기본 설정보다 크게 이 값을 늘리면 서버는 보안 공지 MS11-100에 설명된 서비스 거부 문제에 좀 더 취약해집니다.


참조

보안 공지 MS11-100에 대한 자세한 내용은 다음 TechNet 문서를 참조하십시오.
Microsoft 보안 공지 MS11-100 - 중요
자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오.
2638420 MS11-100: .NET Framework 취약성으로 인한 권한 상승 문제: 2011년 12월 29일

속성

기술 자료: 2661403 - 마지막 검토: 2012년 11월 29일 목요일 - 수정: 4.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 3.5 Service Pack 1
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 2.0 Service Pack 1 (x86)
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.0
  • Windows 7 Service Pack 1?을(를) 다음과 함께 사용했을 때
    • Windows 7 Enterprise
    • Windows 7 Professional
    • Windows 7 Ultimate
    • Windows 7 Home Premium
    • Windows 7 Home Basic
  • Windows 7 Enterprise
  • Windows 7 Professional
  • Windows 7 Ultimate
  • Windows 7 Home Premium
  • Windows 7 Home Basic
  • Windows Server 2008 R2 Service Pack 1?을(를) 다음과 함께 사용했을 때
    • Windows Server 2008 R2 Standard
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 Service Pack 2?을(를) 다음과 함께 사용했을 때
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
  • Windows Vista Service Pack 2?을(를) 다음과 함께 사용했을 때
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Starter
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
  • Microsoft Windows Server 2003 Service Pack 2?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows XP Service Pack 3?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
키워드:?
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403

피드백 보내기

 

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