.htaccess只能上传图片

时间:2012-02-12 13:26:57

标签: php image .htaccess upload

我正在我的网站上开发一个非常简单的PHP上传功能,允许用户上传JUST图像。除了通过php检查mime-type之外,我想要一个.htaccess文件来统治可以上传的内容和不可上传的内容。 我想在我的根文件夹中插入.htaccess,并从那里编写我需要统治的所有文件夹的规则。

这是我第一次使用.htaccess并从互联网上找到了这个: http://pastebin.com/0KNHEbw0

但它不起作用。我在win7上使用xampp在本地测试它,我发现我可以在“oggetti”文件夹中上传任何类型的文件。 那有什么不对?

然后,为了统治其他文件夹我应该写这样的东西吗? http://pastebin.com/dFMUu1g0

提前谢谢!

2 个答案:

答案 0 :(得分:3)

您无法控制通过.htaccess文件上传的文件:Apache(解析这些命令的Web服务器)仅处理提供文件。

您需要在处理上传过程的PHP脚本中执行这些检查。请注意,检查随文件一起发送的MIME类型不是确定文件类型的可靠方法!发送的值可以由攻击者操纵。为了确保文件是图像文件,您可以例如使用getimagesize()

答案 1 :(得分:1)

使用.htaccess无法完成此操作。我猜你正在尝试做的是防止恶意脚本在服务器上意外执行。我通常处理这样的文件上传的方式是:

  1. 将文件名,mime-type等插入到具有auto_increment ID的数据库中。
  2. 使用ID作为文件名 - 无扩展名,并将文件放在webroot之外的目录中。通过这种方式,您可以确定没有人可以执行该文件。
  3. 请求文件时,在数据库中查询文件名mime-type和id,然后将文件发送给readfile()的用户(请点击链接以获取示例)。