本文介绍: 在若依框架内如果使用上传组件前端默认读取文件内容,如果文件格式html,并且文件内容含有一些方法,如alert()等,就会直接运行可能对系统造成伤害,如果系统需要安全测试,这属于一个储存型xss漏洞

在若依框架内如果使用上传组件前端默认读取文件内容,如果文件格式html,并且文件内容含有一些方法,如alert()等,就会直接运行可能对系统造成伤害,如果系统需要安全测试,这属于一个储存型xss漏洞

这地方记录一个简单解决方式

1、前端限制文件格式,不支持html格式的文件上传

2、后端也同样做校验限制html文件格式上传,加强保险

前端代码

<input id="singleFile" name="file" type="file"/>

js:

$(document).ready(function () {
    // 多图上传
    $("#singleFile").fileinput({
        uploadUrl: ctx + 'system/uploads', //上传路径
        uploadAsync: false, //异步上传
        allowedFileExtensions:['zip'], //指定上传文件类型
    })
});

后端代码:

@PostMapping("/uploads")
@ResponseBody
public AjaxResult uploadFiles(@RequestParam("file") MultipartFile file) throws Exception
{
    try
    {
        String extension =FileUploadUtils.getExtension(file);
        if(extension.equals("html")){
            return AjaxResult.error("不支持后缀名html文件格式");
        }else {
        //后端上传代码
 

       String filePath = RuoYiConfig.getUploadPath();

       // 上传并返回文件名

       String fileName = FileUploadUtils.upload(filePath, file);

       fileInfo.setFilePath(fileName);

       return toAjax(sysFileInfoService.insertSysFileInfo(fileInfo));

        }
    }
    catch (Exception e)
    {
        return AjaxResult.error(e.getMessage());
    }
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注