gpt4 book ai didi

c# - 公共(public)类的私有(private)属性在 DLL 中是否安全

转载 作者:行者123 更新时间:2023-11-30 23:13:39 25 4
gpt4 key购买 nike

我理解公共(public)和私有(private)在可访问性和一般编程实践方面的区别。我在 DLL 中更具体地询问此内容的安全性。

DLL 看起来像这样......

public static class OrphanAnnieDecoderRing
{
private const string _secretCode = "Drink More Ovaltine";

private int OvaltineDrinkCount = 0;

public void DrinkOvaltine() => OvaltineDrinkCount += 1;

public string RevealSecret
{
get
{
if (OvaltineDrinkCount >= 500)
{
return _secretCode;
}
else
{
return "Unable to reveal secret!";
}
}
}
}

我的 _secretCode 和 OvaltineDrinkCount 属性是否安全,不会被访问 DLL 的任何人看到或操纵(除了满足特定条件后的有条件允许)?我知道 DLL 文件会带来一些安全问题,但我不确定私有(private)属性或私有(private)常量是否属于需要注意的问题。

最佳答案

没有。

访问修饰符用于限制成员对类调用者的访问。这对于强制封装很有用,这是面向对象编程 OOP 引入的主要目标之一(隐藏实现细节等)。

当您将代码编译为 DLL 时,它会在程序集中转换为中间语言 (IL)(从技术上讲,这与经典的非托管(Win32 动态链接库)关系不大,它在运行时被编译为机器代码目标机器(通过即时编译器,JIT)。

然而,使用 ILSpy 等工具可以很容易地对 IL 进行“逆向工程”。 ,所以每个有权访问您的程序集的人都可以“读取”这个 secret 。

(更进一步,甚至可以使用反射从类外部修改私有(private)只读字段,但那是它自己的主题)。

关于c# - 公共(public)类的私有(private)属性在 DLL 中是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43506131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com