Anotación @Validated

INTEGRIDAD

Las clases anotadas con @RestController deben estar anotadas con @Validated. De lo contrario, Spring no tendrá en cuenta las anotaciones que se utilicen sobre los parámetros de entrada de los métodos del controlador.

Este requisito corrige las vulnerabilidades

  • Command Injection

  • Cross-Site Scripting (XSS)

  • Unvalidated Redirects and Forwards

  • Insufficient Attack Protection

  • Underprotected APIs

 

Ejemplo incorrecto

@RestController @RequestMapping("/missing-validated-annotation") // Falta @Validated public class MissingValidatedAnnotationController { /** * Ejemplo de validaciones de entrada ignoradas al no estar presente la anotación * @Validated en el controlador. * * @param longParam * Parámetro de tipo Long. * @param stringParam * Parámetro de tipo String. * @return Response entity con los valores de los parámetros de entrada. */ @RequestMapping(value = "/ignored-input-validations", method = RequestMethod.GET) public ResponseEntity<Map<String, Object>> ignoredInputValidations( @RequestParam(name = "long-param", required = false, defaultValue = "4") @Min(5) @Max(10) Long longParam, @RequestParam(name = "string-param", required = false, defaultValue = "aaa") @Size(max = 2) @Email String stringParam) { Map<String, Object> ret = new LinkedHashMap<>(); ret.put("long-param", longParam); ret.put("string-param", stringParam); return new ResponseEntity<>(ret, HttpStatus.OK); } }

 

Ejemplo correcto

@RestController @RequestMapping("/input-validation-examples") @Validated // Esta anotación garantiza que se aplican los controles de validación. public class InputValidationExamplesController { ... }

Cumplimiento de estándares y normativas

OWASP

OWASP [Top10/2016] A1 - Injection (in part)
OWASP [Top10/2016] A3 - Cross Site Scripting (XSS) (in part)
OWASP [Top10/2016] A10 - Unvalidated Redirects and Forwards
OWASP [Top10/2017] A7 - Insufficient Attack Protection
OWASP [Top10/2017] A10 - Underprotected APIs

Referencias

OWASP Top 10 Proactive Controls 2016:
https://www.owasp.org/index.php/OWASP_Proactive_Controls#tab=OWASP_Proactive_Controls_2016

OWASP Top 10 Proactive Controls 2016 Mapping:
https://www.owasp.org/index.php/OWASP_Proactive_Controls#tab=Top_10_Mapping_2016

OWASP Top 10 2017:
https://www.owasp.org/index.php/Top_10_2017-Top_10