Das Java-Framework schützt vor CSRF-Angriffen durch die folgenden Mechanismen: Token-Validierung: Generiert und validiert CSRF-Tokens, um sicherzustellen, dass die Anfrage von der erwarteten Quelle stammt. Same-Origin-Richtlinie: Der Browser sendet Anfragen nur an seinen ursprünglichen Ursprung, um standortübergreifende Angriffe zu verhindern. Benutzerdefinierter Token-Speicher: Ermöglicht das Speichern von CSRF-Tokens in Cookies, Headern oder Sitzungen.
Was ist ein CSRF-Angriff?
Ein Cross-Site-Request-Forgery-Angriff (CSRF) ist eine Art Cyberangriff, bei dem ein Angreifer ein Opfer dazu verleitet, ohne Wissen des Opfers Aktionen auf einer Website auszuführen. Der Angreifer nutzte das Sitzungscookie des Opfers, um sich als dessen Identität auszugeben.
Wie verhindert das Java-Framework CSRF-Angriffe?
Java-Frameworks wie Spring MVC und JSF bieten mehrere Mechanismen, um CSRF-Angriffe zu verhindern:
Token-Validierung
@CsrfToken
in Controller-Methoden. Generieren Sie ein CSRF-Token An . @CsrfToken
注释在控制器方法上生成 CSRF 令牌。<inputsecret></inputsecret>
标签生成 CSRF 令牌。Same-Origin 策略
CsrfConfigurer
配置,可指定需要 CSRF 保护的 URL。csrfTokenValidator
来验证 CSRF 令牌并阻止跨域请求。自定义令牌存储
CsrfFilter
和 CsrfTokenRepository
Verwenden Sie das Tag <inputsecret></inputsecret>
, um ein CSRF-Token zu generieren.
Same-Origin-Richtlinie
stellt sicher, dass der Browser Anfragen nur an seinen ursprünglichen Ursprung sendet (d. h. den Server, auf dem sich das von der Seite geladene HTML-Dokument befindet). Spring Security bietet eine CsrfConfigurer
-Konfiguration zur Angabe von URLs, die CSRF-Schutz erfordern.
JSF verwendet csrfTokenValidator
, um CSRF-Tokens zu validieren und ursprungsübergreifende Anforderungen zu blockieren.
Benutzerdefinierter Token-Speicher
🎜CSRF-Tokens können in Cookies, Headern oder Sitzungen gespeichert werden. 🎜🎜Sowohl Spring MVC als auch JSF ermöglichen die Anpassung des Token-Speichers durch die Konfiguration vonCsrfFilter
und CsrfTokenRepository
. 🎜🎜🎜🎜Praktischer Fall: Spring MVC🎜🎜<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>5.5.7</version> </dependency>
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) .and() // 其他安全配置 ; } }
@RequestMapping("/transferMoney") @PostMapping public String transferMoney(@RequestParam int amount, @CsrfToken String csrfToken) { // 验证令牌 csrfTokenManager.verifyToken(csrfToken); // 执行转账操作 }
<form action="/transferMoney" method="post"> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> <input type="text" name="amount" /> <input type="submit" value="Submit" /> </form>
Das obige ist der detaillierte Inhalt vonWie das Java-Framework CSRF-Angriffe verhindert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!