我在服务器中发现有些文件存储在webroot中,例如
example.com/files/longnamewithcode_1234293182391823212313231230812.pdf
它们是为网络应用程序存储的,并且有关于它们的明智信息。
如果您访问example.com/files
,则会显示空index.html
,因此无法直接扫描目录。无论如何,我对此感到担心:我觉得它不安全,我想知道可以对访问文件进行何种攻击。我知道有些暴力攻击是可能的,但是使用长代码名称,我想这是一个不太大的问题。
最后,我会说正确的方法是将文件存储在Web文件夹之外并使用PHP返回它们,但我不确定我是否能够访问代码来更改它。
答案 0 :(得分:1)
如果您必须通过网络服务器从webroot访问这些文件,那么除了在文件名中使用足够数量的熵之外,您无法真正使其更安全,但这仍然不能简单地共享用户的链接以某种方式抓住他们。
如果你想在php中实现权限检查,请查看热门网络服务器上的各种X-Sendfile
实现,如mod_xsendfile(apache),XSendfile(nginx)或{{ 3}}(lighttpd)。这使您可以使用Web服务器提供文件的效率基本上与在验证访问用户后从webroot访问文件一样有效。
答案 1 :(得分:0)
您是否考虑过.htaccess文件来限制允许谁访问这些敏感文件?你标记了它,但我不确定你为什么不使用它。 =)
答案 2 :(得分:0)
如果您希望阻止文件夹中的所有内容,可以使用.htaccess文件来阻止所有连接。
尝试
deny from all
在该目录中的.htaccess文件中。这将拒绝对该目录中任何内容的访问,包括索引文件。
答案 3 :(得分:0)
问题是
文件应该由用户自由访问吗?
如果是,请不要过多担心这些文件(只要它们不可写)。
如果不是,即用户必须登录才能下载它们,请将它们从可公开访问的文件夹中移出并深入到应用程序中。编写一个php脚本来管理文件的权限,即/download?file_id=1
。