Browse Source

Merge branch 'master' into zhc

zhc
zhczyx@163.com 3 weeks ago
parent
commit
8456e026dc
  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;
HttpServletRequest httpRequest = (HttpServletRequest) request;
String referer = httpRequest.getHeader("Referer");
if (StringUtils.isNotBlank(referer) && !"*".equals(accessControlAllowOrigin)) {
// 允许多个域名,逗号分隔
String[] allowedOrigins = accessControlAllowOrigin.split(",");
boolean matched = false;
for (String origin : allowedOrigins) {
origin = origin.trim();
if (StringUtils.isNotBlank(origin) && referer.startsWith(origin)) {
matched = true;
break;
String requestUri = httpRequest.getRequestURI();
// 当 URL 不包含 /common/ 时,校验 Referer
if (!requestUri.contains("/common/")) {
String referer = httpRequest.getHeader("Referer");
if (StringUtils.isNotBlank(referer)){
if(!"*".equals(accessControlAllowOrigin)){
// 允许多个域名,逗号分隔
String[] allowedOrigins = accessControlAllowOrigin.split(",");
boolean matched = false;
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;
}
}
}
// 如果一个都不匹配,则返回 403
if (!matched) {
logger.error("Invalid Referer: {}", referer);
} else {
logger.error("Referer required....");
httpServletResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "Invalid Referer");
return;
}

Loading…
Cancel
Save