老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
2,120

Discuz! X3.* 上传图片时检测真实的文件类型,鉴别错误的扩展名

分类 网站技术/村民张先生 发布于 2016-02-04 06:36
0

应用场景:JPG格式具有高压缩率,更适于互联网传播,本站仅支持上传JPG格式的图片,但部分用户会直接将 PNG 或 BMP 格式的图片修改扩展名为 JPG,绕开系统限制。可采用以下方法进行检测:

1、打开 source/class/discuz/discuz_upload.php 文件,查找:

			$attach['ext'] = $this->fileext($attach['name']);

在其后方增加:

			$filename = $attach['tmp_name'];
			$file = fopen($filename, "rb");
			$bin = fread($file, 2);
			fclose($file);
			$strinfo = @unpack("C2chars", $bin);
			$typecode = intval($strinfo['chars1'].$strinfo['chars2']);
			if($typecode=='6677'&&$attach['ext']!='bmp' || $typecode=='7173'&&$attach['ext']!='gif' || $typecode=='13780'&&$attach['ext']!='png') {
				$attach['unsupported_image_format'] = 1;
			}

2、打开 source/class/forum/forum_upload.php 文件,查找:

		loadcache('attachtype');

在其前方增加:

		if($upload->attach['unsupported_image_format'] == '1') {
			return $this->uploadmsg(51);
		}

3、打开 static/js/forum_post.js 文件,查找:

	'11' : '今日您已无法上传那么大的附件'

将其替换为:

	'11' : '今日您已无法上传那么大的附件',
	'51' : '图像格式不支持,请转换为 .JPG'

更新缓存,刷新发帖页面后测试(将一张PNG格式图片的扩展名修改为JPG,上传测试,失败则表示成功)。

欢迎转载分享,转载请注明 来源:大张小站 https://www.zhang.cq.cn/20161624.html
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截