Nuestro equipo está desarrollando un proyecto en Angular (FE) + servicio REST Java/SpringBoot (BE). La aplicación angular consiste en diferentes formularios para completar, luego los datos se envían a BE.
Estamos en la etapa de lanzamiento y tenemos una lista de reglas para implementar de nuestro equipo de seguridad. Una de las reglas es:
The application protects against template injection attacks by ensuring that any user input being included is sanitized or sandboxed. Ya agregamos .xssProtection() a nuestra configuración de Spring.
¿Necesitamos escapar adicionalmente los caracteres HTML en todos los mensajes como en el ejemplo a continuación? ¿Cuáles son las mejores prácticas en Spring para desinfectar la entrada? ¿O agregar .xssProtection() a la configuración de Spring Security es suficiente?
@Bean public HttpMessageConverter<Object> jsonConverter() { StringDeserializer sanitizedStringSerializer = new StringDeserializer() { @Override public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String deserializedValue = super.deserialize(p, ctxt); return StringEscapeUtils.escapeHtml4(deserializedValue); } }; ObjectMapper objectMapper = Jackson2ObjectMapperBuilder .json() .deserializerByType(String.class, sanitizedStringSerializer) .build(); return new MappingJackson2HttpMessageConverter(objectMapper); }