【问题标题】:How to check if an image is really an image?如何检查图像是否真的是图像?
【发布时间】:2012-01-06 11:55:59
【问题描述】:

我刚刚写了一个 BBCode 类,用户可以使用以下方法放置图像:

[image] $image_link [/image]

我目前担心有人会放置注入代码的图片链接。

如何确定该图像确实是图像而不是代码注入的图像?

附言。用户不能上传文件,只能从其他网站链接。

【问题讨论】:

  • code-injected image links --- 这是什么鬼?
  • @zerk:一个天真的用户认为<img src="nastyscript.js" /> 会执行 js 而不是尝试将其呈现为图像。
  • @Marc B:是吗?我在想可能会在图像中注入一些恶意代码是一种错觉...... :-S
  • @zerkms:并非完全不可能。 zlib 之类的缓冲区溢出确实让plain-jane gif/jpeg 图像包含恶意代码,否则这些代码在其他地方完全没用。然而,现在不太可能。
  • 你实际上对这些标签之间的字符串做了什么?

标签: php image security


【解决方案1】:

不用担心您当前的实现不会发生任何不好的事情。

如果某物被指定为img标签的src属性值,浏览器将尝试将其显示为图像,如果不可能,则不执行任何操作。

【讨论】:

  • zerkms 是正确的。我会提到,狡猾的用户仍然可以使用 HTTP Location 标头将访问者的浏览器发送到其他地方(视频计数膨胀),或者进行 cookie 注入。一些更专业的网站将需要有效的文件扩展名(YouTube,它没有多大作用),或者自己代理图像(GitHub,添加 SSL),或者验证格式。
猜你喜欢
  • 2019-09-04
  • 2023-03-28
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 2013-02-03
相关资源
最近更新 更多