代码之家  ›  专栏  ›  技术社区  ›  Gaurav Gupta

发布ASP.NET网站是否会带来额外的安全好处?

  •  3
  • Gaurav Gupta  · 技术社区  · 15 年前

    我来自一个php/rails后台,在那里部署一个网站通常意味着将源代码ftp/签出到Web服务器上的正确目录中。

    但是,我被要求开发一个ASP.NET网站,一些人建议我“发布”这个网站,而不是直接复制源代码。显然,这会将代码隐藏(.cs)文件转换为编译的dll文件等。

    我的应用程序不包含任何特定的秘密业务逻辑。这是一个常见的购物车应用程序。我的问题是这是否是个好主意?如何不使C代码驻留在服务器上使应用程序更安全?

    4 回复  |  直到 15 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

    1. 命令在Visual Studio中执行。它将.aspx和.cs文件编译成(一个或多个)dll,然后上载到Web服务器。

    就我个人而言,我认为部署预编译的代码不会带来很大的安全效益(除非 obfuscating your pre-compiled DLLs )

    也就是说,我更喜欢它,因为它有以下好处:

    • 至少在我看来,这比把一堆.cs文件放在一个文件夹里要整洁得多。
    • 不必进行C编译的性能优势很小。注意,您的代码仍然需要从IL到本机代码进行JIT,这仍然会导致初始请求性能受到影响(除非您使用 new ASP.NET 4.0 and IIS 7.5 features 或 something else )
    • 发布功能允许您打包应用程序以部署到其他环境(测试、预生产、生产等)。

    注意:来自rails/php,您可能希望继续将.aspx和.cs文件部署到您的服务器上。其好处是,以您可能习惯的方式修改正在运行的应用程序更容易。如果您遵循严格的部署生命周期,这不是一个很好的实践,但是在某些情况下它可能很有用。

        2
  •  2
  •   Pauli Østerø    15 年前

    不过,我可以对预编译做一个补充,这主要是关于安全性和性能的;编译器检查!!如果不进行预编译,您可以轻松上载包含错误的代码文件,但在13天后第一个用户使用此代码文件访问页面时,您将无法发现错误。这是因为ASP.NET在需要时一次只编译一个文件。

    通过预编译,将编译所有文件,并立即捕获所有编译器错误。

    尽管这都是关于预编译的,但是发布不仅仅是关于预编译的。

    另一个重要因素是,您可以指示msbuild在发布期间执行的步骤。也许最重要的是web.config转换,您可以在这里阅读 http://msdn.microsoft.com/en-us/library/dd465318.aspx . 基本上,您可以创建一个转换文件,在发布期间,该文件将基于发布目标替换/添加/删除web.config中的值。

        3
  •  0
  •   ace    15 年前

    您的C代码仍然驻留在服务器上,它只是作为编译后的代码驻留,而不是像在PHP/Rails中那样以脚本的形式驻留。

        4
  •  0
  •   Pieter van Ginkel    15 年前

    推荐文章