finfio_open
实验代码:
1 |
|
接下来我们去搜集一下有关函数的所有信息:
1 | #使用格式 |
对于option中的finfo常量有以下几种:
1 | FILEINFO_NONE (integer) |
这边我们上传一个改了后缀名的php文件:
结果被狠狠的识别了
因为改了后缀名对我们的十六进制文件一点影响都没有,我们上传一个带有PNG文件头的文件:
结果被识别为了png格式,可以看到finfo_open函数也是对我们上传的文件进行一个文件头检测!
- info_open:打开文件
- finfo_file():返回一个文件的信息(finfo_open函数主要是检查十六进制的第一行信息)
Getimagesize
- Getimagesize():是PHP提供的方法,用以判断目标文件是否为图片。其返回结果中有文件大小和文件类型(通过读取文件的前八位的十六进制)。
同样也是对文件头进行检测的一个函数,不过又跟finfo_open有些不同捏,先看一看函数的介绍
可以看到返回了一系列有关图片的属性
但是假如我们上传一个只有上面构造的只有第一行文件头的一个图片,会识别成什么样子呢?
可以看到finfo_open识别为了png图片,但是getimagesize函数并没有识别成功,这就是一个小区别,我们往那个PNG图片第二行随便加点东西看看:
2个都成功识别了
exif_imagetype
他的返回值为以下数据:
1 | 1 IMAGETYPE_GIF |
我本地没能复现啊,我那个拓展就是加载不出来,不过也是文件头检测就对了
About this Post
This post is written by Boogipop, licensed under CC BY-NC 4.0.