【发布时间】:2009-02-17 22:54:20
【问题描述】:
假设我们有一个网站,其中包含一个内部编写的 CF 应用程序。
假设:
- 将使用 Server 2003 IIS6 或 2008 IIS7
- 将使用 ColdFusion 8
- 目录浏览被拒绝
- 需要 SSL 才能连接
- 帐户登录过程是安全的(是的,我知道那是完全不同的 蜡球,但这个概念在网上被讨论得令人作呕)。
假设我在 https://domain.com/folder1/folder2/ 有一个文件,名称类似于 picture92352.ext,可以将其想象为 jpg 或 pdf 或其他格式。域名和文件之间的整个路径在命名结构、深度等方面差异很大。文件不会全部集中在一个文件夹中。
应用程序限制用户的链接,因此用户必须首先访问该文件才能找到它,但现在如果一个人知道该文件的完整 URL,他们可以在不登录的情况下检索它到应用程序。这是经典的默默无闻的安全情况。一个随机的人不太可能找到他们不应该访问的文件,但是一旦有人获得访问权限,他们就会知道如何从另一台 PC 访问该文件,而他们的行为可能不会追溯到他们。
如何在有人登录之前限制对这些文件的访问,并且在外部用户登录后仍然可以访问它们?有没有办法只使用权限,或者是在请求时让代码动态移动文件的唯一答案,还是有一些我什至没有想到的明显步骤?
让我稍微澄清一下。无论文件在页面上如何呈现,用户都可以使用浏览器 IE、Firefox 等来检查文件来自的 URL。如果图像是链接,则在 IE 的右键菜单中始终存在复制快捷方式,而 FF 中的相同功能称为复制链接位置。如果图像作为页面的一部分内联显示,IE 用户可以右键单击并选择属性以查看 URL,在 FF 中存在相同的功能来查看属性,但有一个更快更方便的选项标记为复制图像位置。一旦用户知道文件的 URL(如果位置或文件名没有更改),他们就可以使用该 URL,而无需在 CF 应用程序中进行身份验证。
如果我更改 NTFS/共享权限以使 IUSR 看不到内容,那么我的 CF 应用程序和 IIS 就无法推送它。我应该使用什么策略在 CF 应用程序中提供不会留下这个漏洞的文件?
【问题讨论】:
标签: iis-7 coldfusion iis-6