0

我在我的服务器中发现,一些文件存储在 webroot 中,例如

example.com/files/longnamewithcode_1234293182391823212313231230812.pdf

它们是为网络应用程序存储的,并在它们上包含敏感信息。

如果你访问example.com/files你会得到一个空的index.html,所以你不能直接扫描目录。无论如何,我对此感到担忧:我觉得它不安全,我想知道可以进行什么样的攻击来访问这些文件。我知道一些蛮力攻击是可能的,但是对于长代码名,我想这是一个不那么大的问题。

最后,我想说正确的方法是将文件存储在 web 文件夹之外并使用 PHP 返回它们,但我不确定我是否能够访问代码来更改它。

4

4 回答 4

1

如果您必须让网络服务器从 webroot 访问文件,那么您真的不能让它比在文件名中使用足够量的熵更安全,但这仍然不能解释获得保留的用户简单地共享链接不知何故。

如果您想在 php 中实现权限检查,请查看X-Sendfile流行网络服务器上的各种实现,例如mod_xsendfile (apache)、XSendfile (nginx) 或X-LIGHTTPD-send-file (lighttpd)。这使您可以使用网络服务器来提供文件,基本上就像在验证访问用户后从 webroot 访问它一样有效。

于 2013-01-28T13:55:13.943 回答
0

问题是

文件是否应该由用户自由访问?

如果是,不要太担心这些文件(只要它们不可写)。

如果否,即用户必须登录才能下载它们,将它们从可公开访问的文件夹中移出并深入到应用程序中。编写一个 php 脚本来管理文件的权限,即/download?file_id=1.

于 2013-01-28T13:52:10.753 回答
0

如果您希望阻止文件夹中的所有内容,您可以使用 .htaccess 文件来阻止所有连接。

尝试

deny from all

在该目录的 .htaccess 文件中。这将拒绝对该目录中任何内容的所有访问,包括索引文件。

于 2013-01-28T13:49:38.290 回答
0

您是否考虑过使用.htaccess文件来限制允许访问这些敏感文件的人员?你标记了它,但我不确定你为什么不使用它。=)

于 2013-01-28T13:47:45.833 回答