出版选项

时间:2011-10-17 12:38:13

标签: asp.net visual-studio-2008 iis web-applications security

问:

我想问一下,在网络应用程序发布过程中,在我的服务器上发布.cs.aspx文件是否被视为不良做法,可能会导致安全违规?

因为有时我必须这样做,因为报告文件没有发布或者css文件无法正常工作。


何时使用其中的每个选项:

  • 仅运行此应用程序所需的文件。

  • 所有项目文件。

  • 源项目文件夹中的所有文件

2 个答案:

答案 0 :(得分:3)

这可能是对原则的误用,但我总是想到principle of least privilege。我的意思是:

  • 我的用户是否需要查看任何代码文件(适用于“所有项目文件和源项目文件夹中的所有文件”?
  • 我的用户是否需要查看项目文件夹中的任何文件,但不包含在我的项目中(适用于“源项目文件夹中的所有文件”)?

如果这些问题的答案为否,则我使用仅发布运行此应用程序所需的文件进行发布。

我曾经犯过使用“源项目文件夹中的所有文件”发布网站的错误,因为我需要从我使用的插件中部署一堆.css和.js文件,并且不知道如何在我的网站项目中快速包含这些文件。

但是,只要我看到我的所有源代码都显示在我的生产文件夹中,我就会快速将发布选项切换回“仅运行此应用程序所需的文件”,并部署删除目标文件夹中的所有文件。然后,我环顾四周找到一种方法将所有文件都包含在我项目中不存在的文件夹中,从那以后我就更开心了。

老实说,即使我的用户需要查看某种代码,我也会考虑在任何网站上发布我的.cs文件副本之前写一个quine。人们对互联网安全有不同的看法,但我常常想起Gene Spafford的这句话:

  

唯一真正安全的系统是关闭电源,浇筑在一块混凝土中并密封在带有武装警卫的铅衬里房间 - 即使这样我也有疑虑。

如果你环顾四周,你会发现各种问题,用户试图安全地加密/解密连接字符串,将数据安全地存储在他们的程序(或数据库)中,并以其他方式尽力保留任何人 - 甚至他们最信任的用户 - 来自他们原本不应该访问的用户。

恶意用户尝试访问服务器上的文件的可能性不大,我可以告诉你,恶意用户访问我服务器上的文件要困难得多,因为那些文件我的服务器上不存在

答案 1 :(得分:2)

确保您的IIS设置意味着不会公开提供.cs个文件。这应该与任何敏感或非公共文件类型相同,例如.config

.aspx文件包含您的标记,因此通常可以公开发布和服务。