Post请求解密修改

This commit is contained in:
huguanghan 2024-11-08 17:53:57 +08:00
parent c0d34288e5
commit 67674ac6de
2 changed files with 74 additions and 77 deletions

View File

@ -56,19 +56,16 @@ public class DecryptingOncePerRequestFilter extends OncePerRequestFilter {
// 使用自定义的请求包装器替换原始请求 // 使用自定义的请求包装器替换原始请求
filterChain.doFilter(wrapper, response); filterChain.doFilter(wrapper, response);
} }
} else { } else if (POST.matches(method) && StrUtil.isNotBlank(contentType) && contentType.contains(MediaType.MULTIPART_FORM_DATA_VALUE)) {
String iv = request.getHeader(IV_ATTR_NAME);
// 包装请求以修改参数
DecryptingRequestWrapper wrappedRequest = new DecryptingRequestWrapper(request,aesKey,iv);
filterChain.doFilter(wrappedRequest, response);
}else {
filterChain.doFilter(request, response); filterChain.doFilter(request, response);
} }
// if (POST.matches(method) && StrUtil.isNotBlank(contentType) && contentType.contains(MediaType.MULTIPART_FORM_DATA_VALUE)){
//
// String iv = request.getHeader(IV_ATTR_NAME);
// // 包装请求以修改参数
// DecryptingRequestWrapper wrappedRequest = new DecryptingRequestWrapper(request,aesKey,iv);
// filterChain.doFilter(wrappedRequest, response);
// } else {
// filterChain.doFilter(request, response);
// }
} }
private String readRequestBody(HttpServletRequest request) throws IOException { private String readRequestBody(HttpServletRequest request) throws IOException {

View File

@ -1,67 +1,67 @@
//package com.das.common.interceptor; package com.das.common.interceptor;
//
//import com.das.common.utils.AESUtil; import com.das.common.utils.AESUtil;
//import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
//import jakarta.servlet.http.HttpServletRequestWrapper; import jakarta.servlet.http.HttpServletRequestWrapper;
//
//import java.io.IOException; import java.io.IOException;
//import java.util.HashMap; import java.util.HashMap;
//import java.util.Map; import java.util.Map;
//
//public class DecryptingRequestWrapper extends HttpServletRequestWrapper { public class DecryptingRequestWrapper extends HttpServletRequestWrapper {
// private final Map<String, String[]> decryptedParameters = new HashMap<>(); private final Map<String, String[]> decryptedParameters = new HashMap<>();
//
// public DecryptingRequestWrapper(HttpServletRequest request,String aeskey,String iv) throws IOException { public DecryptingRequestWrapper(HttpServletRequest request,String aeskey,String iv) throws IOException {
// super(request); super(request);
//
// // 提取并解密参数忽略文件部分 // 提取并解密参数忽略文件部分
// request.getParameterMap().forEach((key, values) -> { request.getParameterMap().forEach((key, values) -> {
// if (!isFileParameter(key)) { if (!isFileParameter(key)) {
// String[] decryptedValues = new String[values.length]; String[] decryptedValues = new String[values.length];
// for (int i = 0; i < values.length; i++) { for (int i = 0; i < values.length; i++) {
// decryptedValues[i] = decrypt(values[i],aeskey,iv); // 对每个值进行解密 decryptedValues[i] = decrypt(values[i],aeskey,iv); // 对每个值进行解密
// } }
// decryptedParameters.put(key, decryptedValues); decryptedParameters.put(key, decryptedValues);
// } }
// else { else {
// decryptedParameters.put(key,values); decryptedParameters.put(key,values);
// } }
// }); });
// } }
//
// @Override @Override
// public String getParameter(String name) { public String getParameter(String name) {
// if (decryptedParameters.containsKey(name)) { if (decryptedParameters.containsKey(name)) {
// return decryptedParameters.get(name)[0]; return decryptedParameters.get(name)[0];
// } }
// return super.getParameter(name); return super.getParameter(name);
// } }
//
// @Override @Override
// public String[] getParameterValues(String name) { public String[] getParameterValues(String name) {
// if (decryptedParameters.containsKey(name)) { if (decryptedParameters.containsKey(name)) {
// return decryptedParameters.get(name); return decryptedParameters.get(name);
// } }
// return super.getParameterValues(name); return super.getParameterValues(name);
// } }
//
// @Override @Override
// public Map<String, String[]> getParameterMap() { public Map<String, String[]> getParameterMap() {
// Map<String, String[]> parameterMap = new HashMap<>(super.getParameterMap()); Map<String, String[]> parameterMap = new HashMap<>(super.getParameterMap());
// parameterMap.putAll(decryptedParameters); parameterMap.putAll(decryptedParameters);
// return parameterMap; return parameterMap;
// } }
//
// // 解密 // 解密
// private String decrypt(String value,String aeskey,String iv) { private String decrypt(String value,String aeskey,String iv) {
// // 解密 // 解密
// return AESUtil.decrypt(aeskey, value, iv); return AESUtil.decrypt(aeskey, value, iv);
// } }
//
// //判断是否为文件参数 //判断是否为文件参数
// private boolean isFileParameter(String key) { private boolean isFileParameter(String key) {
// // 实现用于判断 key 是否代表文件参数的逻辑 // 实现用于判断 key 是否代表文件参数的逻辑
// // 比如通过检查命名约定或文件类型 // 比如通过检查命名约定或文件类型
// return key.equalsIgnoreCase("file"); return key.equalsIgnoreCase("file");
// } }
//} }