【问题标题】:.htaccess allows images only.htaccess 只允许图片
【发布时间】:2015-06-17 05:10:54
【问题描述】:

我知道有人问过类似的问题,但没有一个能引导我找到正确的解决方案。

我想做的事

在 /uploads 文件夹中使用 .htaccess 以确保只能上传具有适当扩展名的文件。 (例如 jpg、png)

我做了什么

  • 修改 /etc/httpd/conf/httpd.conf 允许覆盖 .htaccess 文件

  • 在 /uploads 文件夹中创建 .htaccess 文件

为了测试 .htaccess 是否已被读取,我尝试将垃圾放入 .htaccess 文件并从浏览器访问它。产生了相应的错误,因此.htaccess文件工作正常。

问题

以下脚本已添加到 .htaccess 命令拒绝,允许 否认一切

但是,我仍然可以将带有任何扩展名的文件上传到 /uploads 文件夹。

我尝试了类似帖子的不同建议,但没有成功。寻找你们的新方向。

谢谢。

【问题讨论】:

  • 我不认为,使用 .htaccess 可以实现您想要实现的目标,为什么不将上传限制为仅在脚本中实际上传文件的图像!?
  • 您可以让您的服务器仅提供该目录中以特定扩展名结尾的文件。您的 PHP 应该被修改以禁止未经批准的扩展。也可以操作扩展。

标签: php linux apache .htaccess


【解决方案1】:

如果您在 url 中使用带有 base64 编码字符串的 GET 方法,您可以使用 .htaccess 根据该字符串的 mime 类型重定向到上传脚本。但是我想这不是你想要达到的。 .htaccess 不适合您的情况。如果你需要控制上传文件的扩展名,你应该直接在你的上传脚本(php、python等)中进行处理。

【讨论】:

  • 我将通过我的 php 上传脚本来完成......我只是想知道在什么情况下或情况下应该使用“.htaccess”来限制目录中的文件类型?谢谢。
  • 文件类型并不能保证它的内容,有人可以简单地将virus.exe 重命名为my_photo.jpg,这将通过文件类型检查。另一方面,我可能已经下载了一个不错的 jpeg 图像,但是服务器发送它时没有扩展。正如@발렌텐 所建议的,最好的方法是验证内容而不是文件类型。对于非常简单的图像,只需调用 getimagesize()。
  • 非常实用的答案,将其添加为验证规则的一部分,感谢 Cristik
【解决方案2】:

上传文件的名称是浏览器向服务器发出的 POST 请求正文的一部分,因此在您的情况下无法强制执行 .htaccess 规则。除非您正在使用某些上传模式,例如在服务器上创建一个占位符,然后将文件提交到该占位符。

【讨论】:

  • 文件名只是帖子请求的一部分
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 2017-05-21
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
相关资源
最近更新 更多