【add】上传文件类型的黑名单限制

This commit is contained in:
mzc5649
2021-04-14 11:36:29 +08:00
parent c3c919fd7e
commit 7eeb542b89
4 changed files with 32 additions and 0 deletions
@@ -17,6 +17,8 @@ import java.io.InputStream;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DatabaseMetaData; import java.sql.DatabaseMetaData;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -206,4 +208,17 @@ public class CommonUtils {
return DB_TYPE; return DB_TYPE;
} }
/**
* 黑名单限制文件
* @date 2021/4/14 6:18
* @param fileName 文件名
* @return boolean true:处于黑名单 false:不处于黑名单
*/
public static boolean limitFileSuffix(String fileName,String[] fileSuffixLimits){
final List<String> fileNameList = Arrays.asList(fileSuffixLimits);
boolean isExists = fileNameList.stream().anyMatch(name -> fileName.substring(0,fileName.lastIndexOf('.')).contains(name)||fileName.substring(fileName.lastIndexOf('.')).equals(name));
return isExists;
}
} }
@@ -57,6 +57,11 @@ public class CommonController {
*/ */
@Value(value="${jero.uploadType}") @Value(value="${jero.uploadType}")
private String uploadType; private String uploadType;
/**
* 文件后缀黑名单
*/
@Value(value="${jero.fileSuffixLimits}")
private String[] fileSuffixLimits;
/** /**
* @Author 政辉 * @Author 政辉
@@ -81,6 +86,13 @@ public class CommonController {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获取上传文件对象 // 获取上传文件对象
MultipartFile file = multipartRequest.getFile("file"); MultipartFile file = multipartRequest.getFile("file");
// 文件类型是否处于黑名单
if(CommonUtils.limitFileSuffix(file.getOriginalFilename(),fileSuffixLimits)){
result.setMessage("该文件类型不允许上传");
result.setSuccess(false);
result.setCode(0);
return result;
}
if(oConvertUtils.isEmpty(bizPath)){ if(oConvertUtils.isEmpty(bizPath)){
bizPath = ""; bizPath = "";
} }
@@ -94,6 +106,7 @@ public class CommonController {
if(oConvertUtils.isNotEmpty(savePath)){ if(oConvertUtils.isNotEmpty(savePath)){
//上传成功 进行数据库存储 //上传成功 进行数据库存储
OSSFile ossFile = new OSSFile(); OSSFile ossFile = new OSSFile();
// 文件名
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
fileName = CommonUtils.getFileName(fileName); fileName = CommonUtils.getFileName(fileName);
ossFile.setFileName(fileName); ossFile.setFileName(fileName);
@@ -244,6 +244,8 @@ jero :
password: password:
type: STANDALONE type: STANDALONE
enabled: true enabled: true
# 文件限制后缀黑名单
fileSuffixLimits : 0x00,%00,\\00,.jsp,.exe,.php,.asp,.aspx,.jspx,.xml,.html,.js,.sh,.bin
#cas单点登录 #cas单点登录
cas: cas:
prefixUrl: http://cas.example.org:8443/cas prefixUrl: http://cas.example.org:8443/cas
@@ -244,6 +244,8 @@ jero :
password: password:
type: STANDALONE type: STANDALONE
enabled: true enabled: true
# 文件限制后缀黑名单
fileSuffixLimits : 0x00,%00,\\00,.jsp,.exe,.php,.asp,.aspx,.jspx,.xml,.html,.js,.sh,.bin
#cas单点登录 #cas单点登录
cas: cas:
prefixUrl: http://cas.example.org:8443/cas prefixUrl: http://cas.example.org:8443/cas