Iis 7 IIS6或IIS7中ColdFusion 8的Web文件安全最佳实践

Iis 7 IIS6或IIS7中ColdFusion 8的Web文件安全最佳实践,iis-7,coldfusion,iis-6,Iis 7,Coldfusion,Iis 6,假设我们有一个网站,它有一个内部编写的CF应用程序 假设: 将使用服务器2003 IIS6或2008 IIS7 将使用ColdFusion 8 目录浏览被拒绝 连接时需要SSL 帐户登录过程是安全的(是的,我知道这是一个完整的另一个过程) 蜡球,但这一概念在网络上讨论得很自然) 假设我有一个名为picture92352.ext的文件,想象它是jpg或pdf或其他格式。域名和文件之间的整个路径在命名结构、深度等方面差异很大。文件并非都集中在一个文件夹中 该应用程序限制用户的链接,因此用户必须首

假设我们有一个网站,它有一个内部编写的CF应用程序

假设:

  • 将使用服务器2003 IIS6或2008 IIS7
  • 将使用ColdFusion 8
  • 目录浏览被拒绝
  • 连接时需要SSL
  • 帐户登录过程是安全的(是的,我知道这是一个完整的另一个过程) 蜡球,但这一概念在网络上讨论得很自然)
假设我有一个名为picture92352.ext的文件,想象它是jpg或pdf或其他格式。域名和文件之间的整个路径在命名结构、深度等方面差异很大。文件并非都集中在一个文件夹中

该应用程序限制用户的链接,因此用户必须首先访问该文件才能找到该文件,但目前的情况是,如果用户知道该文件的完整URL,则可以在不登录该应用程序的情况下检索该文件。这是典型的默默无闻的情况下的安全。一个随机的人不太可能找到一个他们不应该访问的文件,但一旦有人被允许访问,他们知道如何从另一台电脑上访问它,而他们的行为可能不会追溯到他们

我如何在有人登录之前限制对这些文件的访问,并且在外部用户登录后仍然可以访问这些文件?是否有一种仅使用权限的方法,或者是在请求时让代码动态地移动文件的唯一答案,或者是否有一些我甚至没有想到的明显步骤

让我稍微澄清一下。无论文件如何显示在页面上,用户都可以使用浏览器IE、Firefox等来检查文件来源的URL。如果图像是链接,则IE的右键单击菜单中始终存在复制快捷方式,FF中的相同功能称为复制链接位置。如果图像作为页面的一部分内联显示,IE用户可以右键单击并选择“属性”以查看URL,在FF中,可以使用相同的功能查看属性,但有一个更快捷、更方便的选项标记为“复制图像位置”。一旦用户知道文件的URL,如果位置或文件名不变,他们可以使用该URL,而无需在CF应用程序中进行身份验证


如果我更改NTFS/共享权限,使IUSR无法查看内容,则我的CF应用程序和IIS无法推送内容。在CF应用程序中,我使用什么策略来提供不会留下漏洞的文件?

您可以编写一个提供图像的CFM页面。然后,您只需确保它们在CFM中经过身份验证

<!-- something like this -->
http://localhost/GetFile.cfm?file=foobar.jpg

http://localhost/GetFile.cfm?file=foobar.jpg
在GetFile.cfm中,您可以执行以下操作:

<!-- the filename part is what the browser will pre-popualate the file name in the download dialog as -->
<CFHEADER name="Content-disposition" value="attachment;filename=picture92352.ext"> 
<CFCONTENT type="text/plain" file="\\fileserver\folder1\folder2\picture92352.ext">

看一看各种各样的


如果您想做一些类似的事情,但保留一个更自然的URL,我认为您需要利用ColdFusion的Java servlet基础,为任何匹配特定模式的URL创建一个处理程序。

肯定是要采取的方法。为了进一步扩展,您可以使用cfcontent来交付文件。我们一直都在提供受安全级别和规则保护的文档,注意这对小文件很有效,但对大文件却很难做到。我大概是在CF6.1中这样做的,CF必须将整个文件加载到内存中才能提供服务。