Browse Source

安全扫描,referer只排除common接口

master
review512jwy@163.com 3 weeks ago
parent
commit
6c642ef0ba
  1. 38
      data-center-business-controller/src/main/java/com/techsor/datacenter/business/configurator/CrosXssFilter.java

38
data-center-business-controller/src/main/java/com/techsor/datacenter/business/configurator/CrosXssFilter.java

@ -50,21 +50,31 @@ public class CrosXssFilter implements Filter {
HttpServletResponse httpServletResponse = (HttpServletResponse) response; HttpServletResponse httpServletResponse = (HttpServletResponse) response;
HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletRequest httpRequest = (HttpServletRequest) request;
String referer = httpRequest.getHeader("Referer"); String requestUri = httpRequest.getRequestURI();
if (StringUtils.isNotBlank(referer) && !"*".equals(accessControlAllowOrigin)) { // 当 URL 不包含 /common/ 时,校验 Referer
// 允许多个域名,逗号分隔 if (!requestUri.contains("/common/")) {
String[] allowedOrigins = accessControlAllowOrigin.split(","); String referer = httpRequest.getHeader("Referer");
boolean matched = false; if (StringUtils.isNotBlank(referer)){
for (String origin : allowedOrigins) { if(!"*".equals(accessControlAllowOrigin)){
origin = origin.trim(); // 允许多个域名,逗号分隔
if (StringUtils.isNotBlank(origin) && referer.startsWith(origin)) { String[] allowedOrigins = accessControlAllowOrigin.split(",");
matched = true; boolean matched = false;
break; for (String origin : allowedOrigins) {
origin = origin.trim();
if (StringUtils.isNotBlank(origin) && referer.startsWith(origin)) {
matched = true;
break;
}
}
// 如果一个都不匹配,则返回 403
if (!matched) {
logger.error("Invalid Referer: {}", referer);
httpServletResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "Invalid Referer");
return;
}
} }
} } else {
// 如果一个都不匹配,则返回 403 logger.error("Referer required....");
if (!matched) {
logger.error("Invalid Referer: {}", referer);
httpServletResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "Invalid Referer"); httpServletResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "Invalid Referer");
return; return;
} }

Loading…
Cancel
Save