Php 没有显式链接,如何访问文件?

Php 没有显式链接,如何访问文件?,php,file,.htaccess,permissions,Php,File,.htaccess,Permissions,例如,我在我的服务器中发现一些文件存储在webroot中 example.com/files/longnamewithcode_1234293182391823212313231230812.pdf 它们存储在web应用程序中,并在其上具有合理的信息 如果访问example.com/files会得到一个空的index.html,因此无法直接扫描目录。无论如何,我担心这个:我觉得这是不安全的,我想知道什么样的攻击可以访问文件。我知道一些暴力攻击是可能的,但对于长的代码名,我想这不是一个大问题 最

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

example.com/files/longnamewithcode_1234293182391823212313231230812.pdf
它们存储在web应用程序中,并在其上具有合理的信息

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


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

您是否考虑过一个文件来限制允许谁访问这些合理的文件?您标记了它,但我不确定您为什么不使用它。=)

如果要阻止文件夹中的所有内容,可以使用.htaccess文件阻止所有连接

试一试

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

问题是

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

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


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

如果您必须让Web服务器从webroot访问文件,那么在文件名中使用足够的熵是最安全的,但这仍然不能解释为什么用户以某种方式获得了链接,就可以简单地共享这些链接


如果您想在php内部实现权限检查,请查看流行Web服务器上的各种
X-Sendfile
实现,例如,(apache),(nginx)或(lighttpd)。这使您可以使用Web服务器为文件提供服务,其效率基本上与验证访问用户后从webroot访问文件的效率相同。

好的,我打算这样做。我确信有更多正确的方法可以做到这一点,比如你提供的选项,但我在一个我没有责任的应用程序中偶然发现了这一点。即使在那时,我发现至少有必要问一下这个问题:P谢谢大家。
deny from all