c# - C# Windows 服务的安全性

标签 c# security windows-services clr

我知道在 Java 中运行的 Windows 服务在安全级别上存在缺陷,因为这意味着 JVM 在服务线程中运行,因此潜在威胁的数量增加了。

C# 怎么样? C# 运行在 CLR ( Common Language Runtime ) 上,所以当我说它也可能导致一些严重的安全漏洞时,我错了吗?

最佳答案

CLR 实现了多种安全措施,实际上提供了额外的安全层并避免了 JVM 的一些陷阱。

首先,您的代码是您的,它将照此执行,它不会像 Java 那样在虚拟机上解释和运行。当您在 .NET 中生成程序集或 exe 文件时,您将获得 IL 代码,即中间语言代码。

然后将该 IL 即时编译为机器代码,然后执行该机器代码。没有虚拟机解释它,一旦代码被编译成特定机器的汇编程序,它就会像用标准语言编写的任何其他程序一样执行。

当您执行 .NET 程序时,程序上的第一条指令实际上会加载 CLR,CLR 依次查找程序的主入口点并开始执行。 CLR 加载程序位于 mscorlib.dll 中,而 mscorlib.dll 又位于 GAC 中。 .

现在,GAC 本身确实包含了一些安全措施,其中最重要的是位于 GAC 中的程序集(当然包括来自 Microsoft 的程序集)是强命名的,换句话说,它们是经过签名的。

Microsoft 保留其私钥并对任何版本的 .NET Framework 的每个程序集进行签名,然后在 GAC 上安装时,将根据 Microsoft 公钥检查该签名以查看它们是否匹配。当您使用 Visual Studio 引用 .NET Framework 版本时,该过程会自动完成,尽管可以在编译期间通过命令行显式完成该过程。

所以简而言之,不,它不会导致相同的安全漏洞。

关于c# - C# Windows 服务的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11904941/

相关文章:

windows-services - 安装Windows服务时出现问题

c# - 为访问所选下拉列表 Id asp.net mvc 的列表中的每条记录保存一个项目

c# - 公交公交算法

security - 与 Windows 2008 服务器的 SFTP 连接。如何防止信任首次使用(TOFU)请求?

linux - Hydra http 连接失败

c# - System.Diagnostics.Debugger.Launch();在 Visual Studio C# 2010 Express 版本上

c# - ClickOnce 部署 Windows 服务?

c# - 如何重用其他项目的 .cs 文件

C# 类似于 C++ 中的 DateTime

javascript - javascript "fake privacy"是否存在安全风险?