c# - InternalsVisibleTo - 如何防止某人创建具有相同名称的程序集并访问内部类或方法?

标签 c# .net c#-4.0 reflection .net-assembly

最近,我遇到了使内部类和方法对其他程序集可见的 InternalsVisibleTo 方法。虽然这在拥有一大堆程序集并且希望避免循环依赖或代码重复的应用程序中非常有用,但我们中的一些人认为这可能会暴露安全漏洞。你有什么想法?

例如,如果我有这样一个属性:

[程序集:System.Runtime.CompilerServices.InternalsVisibleTo("foo")]

即使它被隐藏在 assemblyInfo.cs 文件中,也可以通过反汇编等方式发现它。并不是每个人都签署或混淆他们的程序集。现在,有了可能有更多功能可供使用的信息,我可以创建自己的名为 foo.dll 的程序集,然后使用我以前无法使用的方法/类。

最佳答案

这里没有安全漏洞,因为公共(public)/私有(private)区别与安全无关。出于安全原因,成员不是“隐藏”为私有(private)成员,而是出于设计原因。任何人都可以通过反射找到您所有的私有(private)方法并直接调用它们,即使未设置 InternalsVisibleTo

关于c# - InternalsVisibleTo - 如何防止某人创建具有相同名称的程序集并访问内部类或方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28323133/

相关文章:

c# - 如何优化下面的代码

c# - Entity Framework - 为什么这行得通?

windows - C# - 服务如何设置启动参数

c# - 使用 Master Code Behind 的内容页面

javascript - 用于平滑立方体尺寸增加的循环

.net - 为什么 Entity Framework 的 DbContext.Find() 会生成带有 select top 2 的查询?

c# - 如何在 WPF 中创建自己的图形效果?

c# - 结构图 : concrete class at run time

c# - 根据正则表达式拆分字符串

c# - 初始隐藏的 asp.net 面板上的 JQuery 选项卡