我有一个utils类,其中我有很多静态方法,在同一个类中我有一个Native调用声明,如下所示。
<input type="number">
因此,我得到了“不安全的本机调用”,其中静态方法被调用,当我删除上述声明并放置在另一个名为NativeMethods的类中时,它已经清除了所有问题。
但问题是为什么我们自己的静态方法会出现“不安全的本机调用”问题?
答案 0 :(得分:1)
将本机调用移动到* NativeMethods类是Microsoft Code Analysis design check(CA1060)。 The Fortify documentation for this vulnerability引用了Microsoft文档How to: Call Native DLLs from Managed Code Using PInvoke。
它可以标记这些本机调用,无论这些调用是否归您所有(它不知道这一点)。
答案 1 :(得分:0)
将本机调用移动到私有结构/类可以解决此问题。
private struct SecureNativeMethods
{
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
internal static extern bool Beep(int freq, int duration);
}
然后使用SecureNativeMethods.Beep(..)