다음을 통해 공유


CA2139: 투명한 메서드는 HandleProcessCorruptingExceptions 특성을 사용할 수 없습니다.

TypeName

TransparentMethodsMustNotHandleProcessCorruptingExceptions

CheckId

CA2139

범주

Microsoft.Security

변경 수준

주요 변경

원인

투명 메서드는 HandleProcessCorruptedStateExceptionsAttribute 특성으로 표시되어 있습니다.

규칙 설명

이 규칙은 투명한 메서드를 실행하고 HandleProcessCorruptedStateExceptionsAttribute 특성을 사용하여 프로세스 손상 예외를 처리하려고 시도합니다.프로세스 손상 예외는 AccessViolationException 같은 예외의 CLR 버전 4.0 예외 분류입니다.HandleProcessCorruptedStateExceptionsAttribute 특성은 보안에 중요한 메서드에서만 사용할 수 있으며 투명 메서드에 적용되는 경우 무시됩니다.프로세스가 손상 예외를 처리하려면 이 메서드는 보안에 중요하거나 보안에 안전해야 합니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 HandleProcessCorruptedStateExceptionsAttribute 특성을 제거하거나 SecurityCriticalAttribute 또는 SecuritySafeCriticalAttribute 특성으로 이 메서드를 표시하십시오.

경고를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다.

예제

이 예제에서 투명 메서드는 HandleProcessCorruptedStateExceptionsAttribute 특성으로 표시되며 규칙이 실패합니다.또한 이 메서드는 SecurityCriticalAttribute 또는 SecuritySafeCriticalAttribute 특성으로 표시되어야 합니다.

using System;
using System.Runtime.InteropServices;
using System.Runtime.ExceptionServices;
using System.Security;

namespace TransparencyWarningsDemo
{

    public class HandleProcessCorruptedStateExceptionClass
    {
        [DllImport("SomeModule.dll")]
        private static extern void NativeCode();

        // CA2139 violation - transparent method attempting to handle a process corrupting exception
        [HandleProcessCorruptedStateExceptions]
        public void HandleCorruptingExceptions()
        {
            try
            {
                NativeCode();
            }
            catch (AccessViolationException) { }
        }
    }

}