#文件-解析方案-执行权限&解码还原
1、执行权限
文件上传后存储目录不给执行权限(即它并不限制你上传文件的类型,但不会让相应存有后门代码的PHP文件执行,但是PNG图片是可以访问的)
2、解码还原
数据做存储,解析固定(有固定协议:eg: data:image/png;base64,一串base 64编码;
与文件后缀名无关,最后都会解析为数据)
(上传图片->图片数据-> 一串base64编码)
解决方案:显示图片->base64解码->数据还原
文件上传后利用编码传输--解码还原
实例(数据做存储,解析固定,解码还原未进行演示):
上传2.php文件进行尝试
且发现其将2.php文件里面的后门代码base64编码了
虽然不限制上传文件类型,但由于其固定协议,当成图片解析,并且解析为数据类型!
#文件-存储方案-分站存储&OSS对象
1、分站存储
文件上传成功后,到另一个网址里面存储,并不在原网址里面解析
eg:
在upload.xiaodi8.com上传
却在images.xiaodi8.com存储
2、OSS对象
Access控制-oss对象存储-Bucket对象
文件上传成功后,访问相应网址,一打开就是下载这个文件,并不对这个文件进行解析!
#安全绕过
以上方案除目录设置权限如能更换目录解析(即能将文件存储在其能被解析执行的目录下,再次访问该目录可以上传的php文件可以被解析)绕过外,其他(即解码还原、分站存储、oss对象)均无解