作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想避免使用 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;
}
//////////////////////////
}
最佳答案
今天我遇到了同样的问题,并找到了两种方法来实现这一目标。
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。
关于java - 如何在Spring MVC中没有XML的情况下将defaultHtmlEscape设置为true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34796088/
当我在 web.xml 中将 defaultHtmlEscape 设置为 true 时,所有输入字段中设置的值都会被转义。 但是当它们被提交时,这些值不会被转义。 所以,这个参数是不是只做输出,不包括
我是一名优秀的程序员,十分优秀!