【问题标题】:PHP: $_FILES - Why should i restrict specific file types?PHP: $_FILES - 我为什么要限制特定的文件类型?
【发布时间】:2017-12-12 18:07:20
【问题描述】:

今天我在网上浏览有关如何使用 php 公式将文件上传到我的网络服务器的问题,不知何故 everybody 只允许特定的文件类型(并限制所有其他文件类型)。对于想要上传图片的人来说,看到网页除了该文件类型之外没有其他内容,这并不好。其他文件类型有什么问题(例如,直接来自 w3schools.com:只允许 JPG、JPEG、PNG 和 GIF)。
提前谢谢,
维克工作室

【问题讨论】:

  • 你为什么要允许别人上传你不准备处理的文件?
  • 取决于目的。 jpg、jpeg、png 和 gif 是所有浏览器都支持的唯一图像类型,那么对于图像上传表单,为什么还要支持其他格式呢?如果您愿意,您也可以支持其他类型,但您需要进行特定的转换。由于限制类型是一种常见情况,因此 w3schools 和其他示例展示了如何做到这一点是有道理的。如果你不想要它,你可以省略它。
  • 通过 http 上传(无论服务器类型如何)允许任何文件上传 afaik。因为在不知道文件类型的情况下处理文件通常是没有意义的,人们通常会限制某些文件类型和最大大小。另外,这是为了避免病毒等侵入您的系统。

标签: php file types restriction


【解决方案1】:

假设您要上传个人资料图片并且用户正在尝试上传 doc 文件。 反之亦然。那么文件格式限制可能对您的表单有好处,以确保您的安全。

【讨论】:

    【解决方案2】:

    这主要是出于安全原因。 $_FILES 中的所有内容都来自用户的浏览器,因此如果您对接受的内容没有严格验证,恶意用户可能会上传文件

    • 太大 - 如果有人上传 10 GB 的图像怎么办?
    • 有一个危险的文件类型——如果有人将.php 文件上传到您的服务器怎么办?游戏结束。
    • 名称无效 — 如果有人将文件名设置为 ../../../file.txt 怎么办?保存文件时,由于路径中的../..,它可能最终位于不同的目录中。这称为Path Traversal 漏洞。

    在处理文件上传时,您应该根据白名单验证所有这三个。也就是说,有一个您接受的值列表或范围,并丢弃任何不符合这些标准的值。

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 2011-04-04
      相关资源
      最近更新 更多