Spring CSRF unrestricted RequestMapping
このページは日本語には対応しておりません。随時翻訳に取り組んでいます。
翻訳に関してご質問やご意見ございましたら、
お気軽にご連絡ください。
ID: java-security/spring-csrf-requestmapping
Language: Java
Severity: Warning
Category: Security
CWE: 352
Description
Classes that contain methods annotated with RequestMapping
are by default mapped to all the HTTP request methods.
Spring Security’s CSRF protection is not enabled by default for the HTTP request methods GET
, HEAD
, TRACE
, and OPTIONS
.
For this reason, requests or routes with RequestMapping
, and not narrowing the mapping to the HTTP request methods POST
, PUT
, DELETE
, or PATCH
, makes them vulnerable to CSRF attacks.
Learn More
Non-Compliant Code Examples
@Controller
public class UnsafeController {
@RequestMapping("/path")
public void writeData() {
// State-changing operations performed within this method.
}
}
Compliant Code Examples
@Controller
public class SafeController {
/**
* For methods without side-effects use @GetMapping.
*/
@GetMapping("/path")
public String readData() {
// No state-changing operations performed within this method.
return "";
}
/**
* For state-changing methods use either @PostMapping, @PutMapping, @DeleteMapping, or @PatchMapping.
*/
@PostMapping("/path")
public void writeData() {
// State-changing operations performed within this method.
}
}