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

Gau*_*pta 3 c# asp.net security

我来自PHP/Rails背景,其中部署网站通常意味着在Web服务器上的正确目录中FTP/Checkout源代码.

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

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

dar*_*iom 6

ASP.NET代码将始终被编译 - 或者:

  1. 在运行时 - 您可以将.ASPX和.CS文件复制到服务器.请求页面时,将动态编译.ASPX和.CS文件.ASP.NET运行时将创建一个包含已编译代码的DLL(它位于名为Temporary ASP.NET files的文件夹中,其位置取决于您正在使用的.NET版本).
  2. 预编译 - 您可以选择在将代码部署到服务器之前编译代码.这是Publish命令在Visual Studio中的作用.它将.ASPX和.CS文件编译为(一个或多个)DLL,然后将其上载到Web服务器.

就个人而言,我认为部署预编译代码并不会带来很多安全好处(除非您对预编译的DLL进行模糊处理).

那说我更喜欢这些好处:

  • 至少对我来说,似乎比在文件夹中散布一堆.CS文件更整洁
  • 无需进行C#编译有一个小的性能优势.请注意,您的代码仍然需要从IL到本机代码进行JIT,这仍然会导致初始请求性能受到影响(除非您使用新的ASP.NET 4.0和IIS 7.5功能其他功能).
  • 发布功能允许您将应用程序打包以部署到其他环境(测试,预生产,生产等)

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