【问题标题】:Security concern with including csc.exe in website's bin folder将 csc.exe 包含在网站的 bin 文件夹中的安全问题
【发布时间】:2016-11-23 00:37:08
【问题描述】:

为了在 MVC5 下的 .cshtml 文件中使用 C# 6 功能(如 ?.),您需要 need to include csc.exe and related files in your website's bin folder when you deploy it。好的,我能理解其中的原因。

但是,现在这意味着我的网络服务器上有一个完整的 C# 编译器,具有与网站用户相同的权限。这让我犹豫了——理论上,攻击者可以使用它来运行任意代码,就好像它是我的网站一样。

这实际上是一个有效的安全问题吗?

我可以看到两面:一方面,您可能需要已经执行任意代码的能力,以便能够将任意代码传递给 csc 可执行文件。另一方面,我可以看到通过运行我们永远不想编写的代码来访问它来访问内部网站设置(如数据库连接字符串)。

我应该担心吗,或者这被认为是安全的?

【问题讨论】:

  • 我认为黑客从中获得的唯一优势是能够将源代码上传到您的网站并在本地编译,而不必上传已编译的二进制程序。我可以看到防火墙如何可能会阻止黑客将二进制文件上传到您的服务器,而它可能会允许他们上传源代码 - 这只是文本。我认为这纯粹是理论上的风险,但是如果他们已经获得了对您系统的足够访问权限来运行编译器,他们还可以运行其他更危险的东西。

标签: c# .net asp.net-mvc security


【解决方案1】:

据我了解,MVC Razor 视图实际上是任意 C# 代码,任何更改后都会按需重新编译。

因此,任何有权访问网站服务器的黑客都可以在任何版本的 MVC 中运行任意 C# 代码。

我同意这感觉像是一种风险,因为它是,但另一方面,您可以在不重新发布整个网站的情况下更改视图。

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2011-03-25
    相关资源
    最近更新 更多