【发布时间】:2012-06-18 03:14:01
【问题描述】:
我只是想确认我正在做的事情实际上是安全的。
首先,我有一个 GoDaddy 共享主机帐户,但我有一个专用 IP 地址。
让我们调用我的服务器路径/path。
我网站的文件位于/path/mysite
当用户上传文件时,我将其移至/path/uploads/file_name。
某人不可能通过 URL 访问该文件夹。
要补充的是,我在/path/uploads 中有一个 .htaccess 文件,其中包含以下内容:
order deny,allow
deny from all
allow from 1.1.1.1 #let's say 1.1.1.1 is my server's IP address.
然后要真正开始下载文件,我的用户将点击指向mysite.com/file.php?q=[file_id]的链接
在file.php,我是这样下载的:
$mime = mime_content_type($location);
header('Content-disposition: attachment; filename='.$name);
header('Content-type: '.$mime);
readfile($location);
据我所知,任何人上传的文件都不可能在我的服务器上运行,但我可能错了。
我是否需要处理任何安全漏洞?
【问题讨论】:
-
如果您的文档根目录是
/path/mysite并且您的上传文件夹是/path/uploads则它无法通过 url 访问,php 始终可以访问这些文件,因此只需要deny from all。还要检查名为.htaccess的上传 -
您可能还可以向 .htaccess 添加一些声明,例如
Options -ExecCGI,这可能会有所帮助,具体取决于您希望上传和下载的文件类型。这可能有助于扩展您的问题并说出您认为用户上传和下载哪种文件是合理的,以便我们更好地了解可以轻松防范哪些类型的文件。 -
此外,同样取决于您在做什么,调整 /path/upload 目录的权限可能是明智之举。
-
GoDaddy 的主机很糟糕,更难找到更好的主机
-
如果
$location只是$_GET['q'],那么用户可以抓取您服务器上的任何文件。
标签: php security .htaccess upload download