1

我有附加到自定义内容类型的文件,我将该字段设置为私人下载。我也有字段权限,因此只有注册的注册用户(也自动分配角色)才能查看节点页面上的下载链接。这很好用,管理员和特定角色下的用户可以看到要下载的文件,但我的问题是任何人都可以获得链接的副本,即http://develop.ment/system/files/test/SuperSecret.txt并且可以没有问题或需要注册的文件。

我是否需要一个模块来限制访问,甚至需要一个 .htaccess 规则来阻止文件被访问/下载,除非它是通过来自 drupal 节点的登录用户完成的?

通过drupal获得这样的限制似乎很愚蠢,但无论我设置什么权限,任何人都可以轻松下载文件。

所以,伙计们,我错过了什么?似乎 .htaccess 黑客可以解决这个问题,我只是不知道如何或从哪里开始。哦,文件存储在 /var/www/vhosts/develop.ment/private 中,因为文档根目录实际上是develop.ment/httpdocs,这会影响问题吗?将私人下载存储在 DocRoot 之外似乎更安全。

4

2 回答 2

0

您应该使用 imce 模块进行下载。它使您可以让 drupal 本身而不是 apache 提供您的私有文件(即访问受自动生成的 .htaccess 限制的文件)。

然后按角色配置IMCE,定义访问权限。

于 2011-04-20T12:36:46.237 回答
0

实际上有一个严重的安全漏洞,在 Drupal 7.1 和 7.2 中已修复。请参阅SA-CORE-2011-001 - Drupal 核心 - 多个漏洞中的文件模块中的访问绕过部分。

我的 Drupal 安装是 7.2。我使用内容访问模块来控制对单个节点的访问。如果我将访问控制设置为只有经过身份验证的用户才能查看节点,那么附加的私有文件(在我的情况下是图像字段)也仅对经过身份验证的用户可见。匿名用户无法通过直接提供http://example.com/system/files/some-image.jpg来访问该文件。如果我让任何人都可以查看该节点,那么该 URL 将再次可以直接访问。

您正在使用Field Permissions,而不是Content Access。我还没有测试过这种情况,但你可以升级到 7.1 或 7.2,然后看看它是否可以工作。

于 2011-06-17T04:43:47.930 回答