我想避免使用XML配置,因此我创建了compileElement
类,其中有大量bean用于不同目的。
我无法通过在AppConfig
内设置defaultHtmlEscape
来了解如何阻止XSS。我找到的所有内容都是每个表单的配置或XML配置中的全局配置。
我的AppConfig
现在:
AppConfig
答案 0 :(得分:1)
我猜你应该有一个AbstractAnnotationConfigDispatcherServletInitializer
而不是传统的web.xml
,基于你可以:
public class YourServletInititializer extends AbstractAnnotationConfigDispatcherServletInitializer {
// root config, web config and servlet mapping
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("defaultHtmlEscape", "true")
super.onStartup(servletContext);
}
}
答案 1 :(得分:0)
今天我遇到了一个相同的问题,并找到了两种方法来实现这一目标。
application.properties
文件您可以将以下条目添加到application.properties
文件中:
server.servlet.context-parameters.defaultHtmlEscape=true
WebServerFactoryCustomizer
bean 或者,您可以创建一个WebServerFactoryCustomizer
bean来应用定制:
import java.util.Map;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.AbstractServletWebServerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.util.WebUtils;
@Component
public class WebServerCustomisations
implements WebServerFactoryCustomizer<AbstractServletWebServerFactory>
{
@Override
public void customize(AbstractServletWebServerFactory factory)
{
Map<String, String> initParams = factory.getInitParameters();
initParams.put(WebUtils.HTML_ESCAPE_CONTEXT_PARAM, Boolean.toString(true));
}
}
请注意,此方法仅适用于工厂从AbstractServletWebServerFactory
派生的Web服务器。目前看来,这是Tomcat,Jetty和Undertow。