gpt4 book ai didi

java - 如何在Spring MVC中没有XML的情况下将defaultHtmlEscape设置为true?

转载 作者:行者123 更新时间:2023-12-02 04:01:57 25 4
gpt4 key购买 nike

我想避免使用 XML 配置,因此我创建了我的 AppConfig 类,其中有大量用于不同目的的 bean。

我找不到如何通过在我的 AppConfig 中设置 defaultHtmlEscape 来防止 XSS。我发现的所有内容都是每个表单的配置或 XML 配置中的全局配置。

现在我的AppConfig:

@EnableJpaRepositories(basePackages="org.maguss.repositories")
@EnableTransactionManagement
@EnableWebMvc
@Configuration
@ComponentScan({ "org.maguss.*" })
@Import({ SecurityConfig.class })
public class AppConfig {

@Bean(name = "dataSource")
public DriverManagerDataSource dataSource() {
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver");
driverManagerDataSource.setUrl("jdbc:mysql://127.0.0.1:3306/test");
driverManagerDataSource.setUsername("root");
driverManagerDataSource.setPassword("");
return driverManagerDataSource;
}


@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}

//////////////////////////
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan(new String[] { "org.maguss.model" });

JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(additionalProperties());

return em;
}


@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf){
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);

return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
return new PersistenceExceptionTranslationPostProcessor();
}

Properties additionalProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "update");
// properties.setProperty("hibernate.hbm2ddl.auto", "create");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
return properties;
}
//////////////////////////

}

最佳答案

今天我遇到了同样的问题,并找到了两种方法来实现这一目标。

1。将条目添加到 application.properties 文件

您可以将以下条目添加到 application.properties 文件中:

server.servlet.context-parameters.defaultHtmlEscape=true

2。创建一个 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。

关于java - 如何在Spring MVC中没有XML的情况下将defaultHtmlEscape设置为true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34796088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com