CA2111: указатели не должны быть видимыми
Товар | Значение |
---|---|
Идентификатор правила | CA2111 |
Категория | Microsoft.Security |
Критическое изменение | Критическое |
Причина
Общедоступное или защищенное System.IntPtrSystem.UIntPtr поле не доступно только для чтения.
Примечание.
Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".
Описание правила
IntPtr и UIntPtr являются типами указателей, которые используются для доступа к неуправляемой памяти. Если указатель не является частным, внутренним или только для чтения, вредоносный код может изменить значение указателя, потенциально позволяя получить доступ к произвольным расположениям в памяти или вызвать сбои приложения или системы.
Если вы планируете защитить доступ к типу, который содержит поле указателя, см. статью CA2112: защищенные типы не должны предоставлять поля.
Устранение нарушений
Защитите указатель, сделав его доступным только для чтения, внутренним или закрытым.
Когда лучше отключить предупреждения
Отключите предупреждение из этого правила, если значение указателя не зависит от значения указателя.
Пример
В следующем коде показаны указатели, которые нарушают и удовлетворяют правилу. Обратите внимание, что не закрытые указатели также нарушают правило CA1051: не объявляйте видимые поля экземпляров.
using System;
namespace SecurityRulesLibrary
{
public class ExposedPointers
{
// Violates rule: PointersShouldNotBeVisible.
public IntPtr publicPointer1;
public UIntPtr publicPointer2;
protected IntPtr protectedPointer;
// Satisfies the rule.
internal UIntPtr internalPointer;
private UIntPtr privatePointer;
public readonly UIntPtr publicReadOnlyPointer;
protected readonly IntPtr protectedReadOnlyPointer;
}
}
Связанные правила
CA2112: защищенные типы не должны предоставлять поля
CA1051: не объявляйте видимые поля экземпляров
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по