【问题标题】:Is is necessary to Securing private .Net assemblies?是否有必要保护私有 .Net 程序集?
【发布时间】:2009-09-17 23:31:41
【问题描述】:

我目前正在处理一个 .net 项目,我将其划分为不同的程序集。

一个程序集(一个 dll)将包含大部分域逻辑,而其他程序集 (.exe) 将包含大部分表示和控制逻辑。

我的问题是,如果我想阻止某人获取我的 DLL,并将其添加为 Visual Studio 上的引用并在未经我许可的情况下为模型开发新接口,我可以通过将程序集构建为私有来执行此操作吗? ?将程序集构建为私有是否意味着只有一起构建的程序集才能被彼此引用?

构建应用程序并将其 DLL 和 EXE 作为单个逻辑单元运行的最简单方法是什么,在构建项目时,DLL 程序集只能被引用程序集引用。

问候,

【问题讨论】:

    标签: .net security assemblies


    【解决方案1】:

    InternalsVisibleToAttribute 可以提供帮助。只需使用 .exe 程序集全名将其放在 .dll 上,然后在 .dll internal 中制作所有内容:

    [assembly:InternalsVisibleTo("full name of the .exe")]
    
    internal class Whatever { }
    internal interface IWhatever { }
    

    如果您使用strong names 会更安全,否则我可以创建一个与您的文件名相同的 .exe。

    还有一个关于Friend Assemblies的MSDN页面。

    【讨论】:

      【解决方案2】:

      您是否试图防止对您的程序集的随意或蓄意滥用?对于偶然的误用,通过朋友程序集使用声明一个半公共 API 将起作用。但是,任何完全受信任的代码都可以通过反射调用程序集中的低可见性成员,因此限制可见性无法防止故意滥用。对于这种情况,有时值得混淆您的半公共 API,以使无意的调用者更难使用它。

      【讨论】:

        猜你喜欢
        • 2018-06-05
        • 2017-06-17
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        • 2017-05-16
        • 2016-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多