【问题标题】:Safe way to upload GIF上传 GIF 的安全方式
【发布时间】:2014-02-21 09:03:27
【问题描述】:

我正在实施图片上传解决方案。

现在一切正常,我开始考虑安全性。 在互联网上进行了大量研究后,我发现最安全的上传图像的方法是重新创建它。

为此,我使用 GD Image Editor,它获取图像大小并将其从每一侧调整为 -1px。

出现的问题是我无法重新创建 GIF 图像,因为它变得静态(而且丑陋)。

我的问题是,如果有人做过某事,我有什么选择?也许其他一些解决方案可以让用户安全地上传 GIF 图片?

【问题讨论】:

  • 如果它是一个有效的图像,你为什么要操纵它?
  • 所以最好只检查尺寸对吗?

标签: php image security gd gif


【解决方案1】:

首先也是最重要的事情是为任何上传的图像分配您自己的文件名和扩展名。由于您的网络服务器根据文件的扩展名决定如何处理您的文件,因此您应该确保它是“.gif”。 重命名整个文件,而不仅仅是它的扩展名,确保没有人找到破坏扩展安全并注入他自己的扩展的方法。

切勿依赖发送的任何 mime 类型来确定文件类型。 Mime 类型可以被操纵并且不可靠。如果您必须检查您的文件,请使用 getimagesize() 之类的方法。但同样,如果您仍然设置文件名和扩展名,则不需要这样做。

http://www.php.net/manual/en/function.getimagesize.php

您还应该确保文件大小不要太大,以避免服务器空间不足。

确保在上传之前登录并只允许每个用户进行合理数量的上传也是防止空间不足的一个很好的安全措施。

所以,简而言之:

  • 设置文件名和扩展名
  • 不要依赖发送的文件名
  • 不要依赖发送的 mime 类型
  • 检查最大文件大小
  • 确保用户不会发送垃圾文件

【讨论】:

  • 哦,您可能还想检查 TTP。 urbandictionary.com/define.php?term=ttp
  • 谢谢,getImageSize 是有道理的,如果它有一个大小,那么它就是一个图像)我没有得到 mime 类型的部分。我的意思是我知道这是如何工作的,你能验证一下吗?例如,当有人上传图片时,我可以检查它是否以 .gif 或 .jpg 结尾,然后自己命名并在最后(如果是 .gif)附加 .gif。或者是否有任何功能(例如在 GD 中)来获得正确的类型?
  • 没有。你应该这样做。你也可以检查 getimagesize() 的 imageinfo 部分,但你不应该依赖其他任何东西,尤其是 $_FILES 的 mime 部分。
  • 明白了,谢谢,这种方式更简单。我只是没有得到 TTP )) 听起来很有趣,但我在互联网上找不到任何东西。你的意思是php执行时间?喜欢不吃CPU
  • 这意味着您可能会想如果用户可以通过此功能上传不合适的内容,而无需任何人在公开之前检查文件。
猜你喜欢
  • 2011-01-26
  • 2012-11-19
  • 2015-03-19
  • 2012-06-14
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
相关资源
最近更新 更多