Что использовать вместо SafeHandle.DangerousGetHandle?
Я смотрел на мой SonarQube статический анализ кода и наткнулся на отчет, который говорит, что с помощью вызова метода SafeTokenHandle DangerousGetHandle.
Я начинаю с объявления SafeTokenHandle:
SafeTokenHandle safeTokenHandle;
var returnValue = Logon(safeTokenHandle);
Проверьте это возвращаемое значение для моего метода входа.
if (false == returnValue)
{
//stuff
}
Используйте основной "с помощью", который я вхожу значение SafeTokenValue:
using (safeTokenHandle)
{
Console.WriteLine("Did LogonUser Succeed? " + "Yes");
Console.WriteLine("Value of Windows NT token: " + safeTokenHandle);
Затем у меня есть другое использование, которое устанавливает новый WindowsItentity с помощью метода "DangerousGetHandle":
using (var newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle()))
Есть ли способ пойти дальше и получить эту информацию, не используя метод "DangerousGetHandle", или мне просто нужно принять на себя риск по этому поводу?
Microsoft говорит: "Метод DangerousGetHandle может представлять угрозу безопасности", прежде всего из-за того, что ссылка устарела, что может привести к получению доступа к конфиденциальной информации.
Похоже, что использование DangerousAddRef и DangerousRelease - это совет Microsoft, но, похоже, они тоже сопряжены с риском. Любое направление будет полезно.