증상
다음 업데이트 중 하나를 설치한 후 Microsoft SharePoint의 일부 고스트된 페이지가 렌더링되지 않습니다.
-
SharePoint Enterprise Server 2016용 보안 업데이트 설명: 2020년 9월 8일(KB 4484506)
-
SharePoint Foundation 2013용 보안 업데이트 설명: 2020년 9월 8일(KB 4484525)
-
SharePoint Foundation 2010용 보안 업데이트 설명: 2020년 9월 8일(KB 4486667)
예를 들어, MIM(Microsoft Identity Manager) 포털 페이지와 SharePoint 솔루션을 통해 배포된 일부 사용자 지정 페이지가 렌더링되지 않습니다.
또한, 다음 시나리오 중 한 개 이상이 발생할 수 있습니다.
시나리오 1
차단된 고스트 페이지에는 다음 오류 메시지 중 하나가 표시됩니다.
-
이 페이지에는 'autoeventwireup' 특성이 허용되지 않습니다.
-
이 페이지에는 'enablesessionstate' 특성이 허용되지 않습니다.
-
이 파일에는 코드 블록이 허용되지 않습니다.
-
이벤트 처리기 'OnSelectedIndexChanged'는 이 페이지에서 허용되지 않습니다.
참고 마지막 오류 메시지의 이벤트는 "OnClick"과 같은 다른 이벤트일 수도 있습니다.
시나리오 2
차단된 고스트된 페이지에는 다음 오류 메시지가 표시됩니다.
UnsafeControlException: 이 페이지의 웹 파트 또는 웹 양식 컨트롤을 표시하거나 가져올 수 없습니다. 형식을 찾을 수 없거나 안전한 것으로 등록되지 않았습니다.
시나리오 3
차단된 고스트된 페이지에는 다음 오류 메시지가 표시됩니다.
이 페이지에서는 '/_layouts/somedirectory/affectedusercontrol.ascx' 참조 파일이 허용되지 않습니다.
원인
고스트된 페이지는 파일 시스템에 저장됩니다. 서버 측 스크립트 및 안전하지 않은 컨트롤을 금지하여 보안 수준이 개선됩니다. 다음 조건이 true인 경우 고스트된 페이지가 렌더링되지 않을 수 있습니다.
-
고스트된 페이지에는 인라인 코드 또는 서버측 스크립트가 포함되어 있습니다.
-
코드 숨김 유형 또는 웹 파트 유형이 안전한 것으로 등록되지 않았습니다.
시나리오 1에 대한 해결 방법
이 문제를 해결하려면 VirtualPath 특성이 있는 새 PageParserPath 요소를 configuration/SharePoint/SafeMode/PageParserPaths 요소 아래의 Web.config 파일에 추가합니다.
예를 들어 다음과 같은 오류 메시지가 나타납니다.
"이 페이지에서는 'autoeventwireup' 속성이 허용되지 않습니다."
이 경우 다음과 같이 PageParserPath 요소를 추가할 수 있습니다.
<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="15" TotalFileDependencies="250" AllowPageLevelTrace="false">
<PageParserPaths>
<PageParserPath VirtualPath="/<relativepath>/page.aspx" CompilationMode="Always" AllowServerSideScript="true" AllowUnsafeControls="true"/>
</PageParserPaths>
</SafeMode>
동일한 가상 디렉터리의 모든 페이지를 차단 해제해야 하는 경우 다음과 같이 PageParserPath 요소를 사용할 수 있습니다.
<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="15" TotalFileDependencies="250" AllowPageLevelTrace="false">
<PageParserPaths>
<PageParserPath VirtualPath="/<relativepath>/*" CompilationMode="Always" AllowServerSideScript="true" AllowUnsafeControls="true" IncludeSubFolders="True"/>
</PageParserPaths>
</SafeMode>
-
VirtualPath는 차단된 페이지의 경로입니다.
-
VirtualPath는 고스트되어 있으며 어떠한 사용자에 의해서도 언고스트될 수 없는 페이지 또는 이러한 페이지가 포함된 디렉터리를 참조해야 합니다.
-
VirtualPath는 다른 페이지를 참조하지 않는 페이지 또는 고스트될 수 없는 마스터 페이지 또는 이러한 페이지나 마스터 페이지를 포함하지 않는 디렉터리를 참조해야 합니다.
-
DirectFileDependencies는 허용되는 직접 파일 종속성의 수를 나타냅니다. "허용되는 직접 파일 종속성의 수가 한도를 초과합니다"라는 오류 메시지가 표시될 경우 이 값을 변경합니다.
시나리오 2의 해결 방법
이 문제를 해결하려면 SafeControls 요소(해결 방법)에 설명된 대로 지정된 유형, 네임스페이스에 SafeControls 요소를 추가하고 configuration/SharePoint/SafeControls 요소 아래의 Web.config 파일에 강력한 이름을 지정합니다. 그런 다음, 안전 특성을 TRUE로 설정합니다.
SafeControls 요소의 특성 값 형식에 관한 자세한 내용은 방법: 컨트롤을 안전 컨트롤로 표시의 12단계 "Package Designer에서 안전한 컨트롤 표시" 섹션에 있는 표를 참조하세요.
시나리오 3의 해결 방법
이 문제를 해결하려면 Src 특성을 사용하는 새 SafeControls 요소를 configuration/SharePoint/SafeControls 요소 아래의 Web.config 파일에 추가합니다.
예를 들어, 다음과 같은 오류 메시지가 나타납니다.
이 페이지에서는 '/_layouts/somedirectory/affectedusercontrol.ascx' 참조 파일이 허용되지 읺습니다.
이 경우, 다음 예와 같이 SafeControls 요소를 추가할 수 있습니다.
< SafeControls>
<SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" SafeAgainstScript="True" />
</SafeControls>
< SafeControls> <SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" /> </SafeControls>