Php 文件上载限制某些文件类型
我正在做一个只允许jpgs的文件上传脚本。Php 文件上载限制某些文件类型,php,Php,我正在做一个只允许jpgs的文件上传脚本。 我用来检查的脚本是 $size = getimagesize($filename); $size['mime']; 这在大多数情况下都有效。但是,如果我有一个“gif”文件,并且我将扩展名重命名为“jpg”,则会欺骗系统,因为该文件的mime类型显示为jpg 我怎样才能防止呢 所以jpg和png是允许的 Gif是不允许的 但是,如果我有一个“gif”文件,并且我将扩展名重命名为“jpg”,则会欺骗系统,因为该文件的mime类型显示为jpg 使用以下命
我用来检查的脚本是
$size = getimagesize($filename);
$size['mime'];
这在大多数情况下都有效。但是,如果我有一个“gif”文件,并且我将扩展名重命名为“jpg”,则会欺骗系统,因为该文件的mime类型显示为jpg
我怎样才能防止呢
所以jpg和png是允许的
Gif是不允许的
但是,如果我有一个“gif”文件,并且我将扩展名重命名为“jpg”,则会欺骗系统,因为该文件的mime类型显示为jpg
使用以下命令提取文件基名称(不带扩展名):
并根据
getimagesize()
返回的文件类型添加扩展名,而不是用户告诉您的文件类型。如果您只需要JPEG,则加载该扩展名,对于伪JPEG,错误时返回FALSE。而不是$size['mime']
(您已经意识到,这是mime类型,因此并不完全可靠),使用$size[2]
说它包含
IMAGETYPE_XXX常量之一,指示图像的类型
页面下方的注释方便地列出了这些常量:
1 = GIF
2 = JPG
3 = PNG
4 = SWF
5 = PSD
6 = BMP
7 = TIFF (Intel byte order)
8 = TIFF (Motorola byte order)
9 = JPC
10 = JP2
11 = JPX
12 = JB2
13 = SWC
14 = IFF
15 = WBMP
16 = XBM
此信息是通过检查文件本身生成的,因此是您可以使用的最可靠的机制。PHP还能够检测文件的MIME类型,即通过使用
MIME\u content\u Type
。这是一种安全的方法,因为它实际上会检查文件的内容。我不知道删除扩展名会起到什么作用,除了使$file
变量对实际访问文件无效。@leonbloy:Aha,就是这样!谢谢
1 = GIF
2 = JPG
3 = PNG
4 = SWF
5 = PSD
6 = BMP
7 = TIFF (Intel byte order)
8 = TIFF (Motorola byte order)
9 = JPC
10 = JP2
11 = JPX
12 = JB2
13 = SWC
14 = IFF
15 = WBMP
16 = XBM