CA2133: 대리인은 투명도가 일관된 메서드에 바인딩해야 합니다.
항목 | 값 |
---|---|
RuleId | CA2133 |
범주 | Microsoft.Security |
주요 변경 내용 | 주요 변경 |
참고 항목
이 경고는 CoreCLR(Silverlight 웹 애플리케이션과 관련된 CLR 버전)을 실행하는 코드에만 적용됩니다.
원인
이 경고는 SecurityCriticalAttribute로 표시된 대리자를 투명하거나 SecuritySafeCriticalAttribute로 표시된 메서드에 바인딩하는 메서드에서 발생합니다. 또한 투명하거나 안전에 중요한 대리자를 중요한 메서드에 바인딩하는 메서드에서도 이 경고가 발생합니다.
참고 항목
이 규칙은 더 이상 사용되지 않습니다. 자세한 내용은 사용되지 않는 규칙을 참조하세요.
규칙 설명
대리자 형식과 대리자 형식이 바인딩되는 메서드의 투명도가 일치해야 합니다. 투명하고 안전에 중요한 대리자는 다른 투명하거나 안전에 중요한 메서드에만 바인딩될 수 있습니다. 마찬가지로, 중요한 대리자는 중요한 메서드에만 바인딩될 수 있습니다. 이 바인딩 규칙은 대리자를 통해 메서드를 호출할 수 있는 코드에서만 동일한 메서드를 직접 호출할 수도 있도록 합니다. 예를 들어 바인딩 규칙은 투명 코드가 투명 대리자를 통해 중요한 코드를 직접 호출할 수 없도록 방지합니다.
위반 문제를 해결하는 방법
이 경고의 위반 문제를 해결하려면 대리자나 대리자가 바인딩되는 메서드의 투명도를 변경하여 대리자와 메서드의 투명도가 같도록 합니다.
경고를 표시하지 않는 경우
이 규칙에서는 경고를 표시해야 합니다.
코드
using System;
using System.Security;
namespace TransparencyWarningsDemo
{
public delegate void TransparentDelegate();
[SecurityCritical]
public delegate void CriticalDelegate();
public class TransparentType
{
void DelegateBinder()
{
// CA2133 violation - binding a transparent delegate to a critical method
TransparentDelegate td = new TransparentDelegate(CriticalTarget);
// CA2133 violation - binding a critical delegate to a transparent method
CriticalDelegate cd = new CriticalDelegate(TransparentTarget);
}
[SecurityCritical]
void CriticalTarget() { }
void TransparentTarget() { }
}
}
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기