保存上传图片的扩展名

时间:2011-02-24 21:32:52

标签: php security upload

将文件保存在文档根目录上方时,是否有必要放弃上传图片的扩展名?我正在考虑通过img.php?i=thisImage.png调用图像,其中图像名称内部通过mb_split('.',$_GET['i'])运行,后者用作内部header('Content-Type: image/$img[1]')。就我个人而言,无论是img.php?i=thisImage.png还是img.php?i=thisImage,它似乎都不重要,但我总是要加强安全性。

此外,除了使用Content-Type: Content-Length:的PHP代理并提供上述文档根目录中的图像外,还有哪些最佳方法?关于通过IM从源头复制图像,我听到了不一的看法,但正如我所说,他们的意见不一。

1 个答案:

答案 0 :(得分:1)

如果文件保存在Web可访问区域之外并通过脚本推送到客户端,我知道单独保留文件名没有问题。

我使用的方法(在KFM和我的CMS中)是使用mod_rewrite将调用重定向到将为您检索文件的脚本。

例如,如果您有URL /f/file.jpg,但文件实际位于../files/file.jpg,那么您使用mod_rewrite来“捕获”请求并将其重定向到脚本。例如:

RewriteRule ^f/(.*)$ /get-file.php?filename=$1 [L]

然后编写get-file.php,使用readfile()之类的方法通过

传递文件