【问题标题】:publishing options发布选项
【发布时间】:2011-12-09 06:43:12
【问题描述】:

问:

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

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


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

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

  • 所有项目文件。

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

【问题讨论】:

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


    【解决方案1】:

    这可能是误用了原理,但我一直想到principle of least privilege。我的意思是:

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

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

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

    但是,当我看到我的所有源代码都显示在我的生产文件夹中时,我迅速将我的发布选项切换回“仅运行此应用程序所需的文件”,并部署删除目标文件夹中的所有文件。然后,我环顾四周,想办法将所有文件包含在我的项目中没有的文件夹中,从那以后我变得更快乐了。

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

    唯一真正安全的系统是关闭电源、浇筑在混凝土块中并密封在配备武装警卫的铅制房间内的系统——即便如此,我仍有疑问。

    如果您环顾四周,您会发现各种问题,其中用户试图安全地加密/解密连接字符串、将数据安全地存储在他们的程序(或数据库)中,或者尽最大努力留住任何人——甚至他们最信任的用户 - 获得他们原本不应该拥有的访问权限。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-04
        相关资源
        最近更新 更多