Heim >Java >javaLernprogramm >Wie das Java-Framework CSRF-Angriffe verhindert

Wie das Java-Framework CSRF-Angriffe verhindert

WBOY
WBOYOriginal
2024-06-01 13:29:56887Durchsuche

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.

Wie das Java-Framework CSRF-Angriffe verhindert

Wie das Java-Framework CSRF-Angriffe verhindert

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

  • Spring MVC: Verwenden Sie die Annotation @CsrfToken in Controller-Methoden. Generieren Sie ein CSRF-Token An . @CsrfToken 注释在控制器方法上生成 CSRF 令牌。
  • JSF:使用 <inputsecret></inputsecret> 标签生成 CSRF 令牌。

Same-Origin 策略

  • 确保浏览器只向其原始来源(即从该页面加载的 HTML 文档所在的服务器)发送请求。
  • Spring Security 提供了 CsrfConfigurer 配置,可指定需要 CSRF 保护的 URL。
  • JSF 使用 csrfTokenValidator 来验证 CSRF 令牌并阻止跨域请求。

自定义令牌存储

  • 可以将 CSRF 令牌存储在 cookie、header 或会话中。
  • Spring MVC 和 JSF 都允许通过配置 CsrfFilterCsrfTokenRepository
JSF:

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 von CsrfFilter 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>
🎜🎜rrreee 🎜 🎜4 Token zur HTML-Seite: 🎜🎜rrreee

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn