上传漏洞攻守之道

1、 什么是上传漏洞

        上传漏洞是指应用系统在处理用户上传文件时,未对文件进行合法性验证,如文件名、扩展名等。同时如果上传文件的路径、文件名、扩展名成为用户可控数据,就会导致直接上传脚本或木马至系统服务器上,从而使攻击者控制服务器。

2、 上传漏洞的危害

        攻击者上传脚本或木马文件至应用服务器,从而可直接控制服务器。

3、 上传漏洞的防守方法

        上传漏洞的本质是攻击者将非法的文件上传至服务器从而达到攻击的目的。那么防守的本质就是校验上传文件的合法性及上传文件的隔离

        方法如下:

        1、基于对象存储实现文件上传,即确保文件存储的安全性,又能保证隔离性。如各种公有云/私有云的文件储存服务。

        2、禁止将文件(包含各种临时缓存文件)存储在Web应用程序部署目录下。

        3、根据业务需求使用白名单策略限制文件上传后缀名,如业务侧使用excel导入数据时,仅允许用户上传xls、xlsx等excel类型的文件。

        4、禁止上传html、htm、swf等可被浏览器解析的文件。

Java后端文件上传示例

//定义可上传文件后缀白名单
String[] suffixList=newString[]{"xls", "xlsx"};
//定义一个非web目录的文件上传路径
String uploadFilePath="/upload/excel";

//根据入参uploadFileParam获取上传文件名
String fileName=uploadFileParam.getFileName();
// 解析出文件后缀名,并进行字母小写转换
String suffixName=fileName.substring(fileName.lastIndexOf(".") +1,fileName.length()).toLowerCase();

//判断是文件后缀是否在白名单内
if(Arrays.asList(suffixList).contains(suffixName)) {
	// 为上传文件生成随机文件名
	String newFileName=UUID.randomUUID().toString().replace("-", "") +"."+suffixName;
	//写文件并入库
	doWriteFile();
} else {
	//非EXCEL类型文件,禁止处理
	return;
}

      

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值