如何隐藏实际的下载文件夹位置(how to hide the actual download fol

2019-08-01 03:08发布

我在我的脑海的一个问题是如何mod_rewrite增加了安全性。

我有我的PHP文件,该文件显示.pdf文件在网上像www.exaple.com?id=234 ,它使一个查询数据库并获取实际的文件夹位置。

实际的文件夹位置是uploads/和我使用像如何隐藏实际的文件夹位置

现在,我想使用google docs

 echo "<iframe src=\"http://docs.google.com/gview?url=".root."uploads/myfile.pdf"."&embedded=true\" style=\"width:100%; height:100%;\" frameborder=\"0\"></iframe>

但我不希望显示的上传目录uploads/在这个url.So我使用module_rewrite的目录名称更改为myfiles/

现在的问题是,当用户更改目录www.example.com/myfiles/hacking.php比它也将重写uploads/hacking.php

我允许用户上传files.although我使用的黑名单,但我们认为安全漏洞可能存在

Answer 1:

不要将文件放在网络访问的位置。 保持它的某个地方出了www根,并有一个脚本来打开,读取和输出文件到浏览器。

这样一来,即使它是一个PHP文件,只有内容将被发送下来,不会被执行。



Answer 2:

重写的URL隐藏的路径是无用的。

最后,你有一个用户可以使用的URL。 请求将送他的资源。 什么区别,如果他要求example.com/?fileid=123代替example.com/uploads/file123.ext?

是的,把东西在参数强迫你使用脚本来获取和发送资源。 使用的东西,看起来像一个路径只允许你使用这个脚本。 但它可以被使用,并没有什么这提高了安全性。 不使用脚本意味着不能够检查是否请求资源的用户被允许,但对于公共资源,这是没有问题的。

你到底想干什么? 您的安全问题是检查恶意内容是否被上传? 如果允许上传可执行文件,并且还让他们来执行,你注定。 重写任何URL不以任何方式帮助。

检查什么被上传。 从你的服务器上执行防止这种东西。

当涉及到使用这里讨论的URL,情况应该是这样的:

如果不重写你将引用/uploads/example.pdf ,使用重写应该改变这个网址成别的东西, 并禁用原始地址 ! 如果您仍然可以通过上传文件夹中得到的东西,你的重写是错误的。

如果这是正确的,你是不是在任何需要使用旧的URL上传,因为它不工作了。



文章来源: how to hide the actual download folder location