0

I was looking at my SonarQube static code analysis and came across a report that says using a SafeTokenHandle DangerousGetHandle method call.

I start by declaring a SafeTokenHandle:

SafeTokenHandle safeTokenHandle;
var returnValue = Logon(safeTokenHandle);

检查它对我的登录方法的返回值。

            if (false == returnValue)
            {
                //stuff
            }

Use a basic "using" which I log the value of the SafeTokenValue:

            using (safeTokenHandle)
            {
                Console.WriteLine("Did LogonUser Succeed? " + "Yes");
                Console.WriteLine("Value of Windows NT token: " + safeTokenHandle);

然后我有另一个 using 使用“DangerousGetHandle”方法设置一个新的 WindowsItentity:

                using (var newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle()))

有没有办法在不使用“DangerousGetHandle”方法的情况下继续获取该信息,还是我只需要接受这方面的风险?

微软表示:“DangerousGetHandle 方法可能带来安全风险”主要是因为引用变得陈旧,这可能导致它访问敏感信息。

看起来使用DangerousAddRefDangerousRelease是微软的建议,但这些似乎也有风险。任何方向都会有所帮助。

4

0 回答 0