首頁  >  文章  >  Java  >  java框架如何防止CSRF攻擊

java框架如何防止CSRF攻擊

WBOY
WBOY原創
2024-06-01 13:29:56796瀏覽

Java 框架透過以下機制防止 CSRF 攻擊:令牌驗證:產生並驗證 CSRF 令牌,以確保請求來自預期來源。 Same-Origin 策略:瀏覽器僅向其原始來源發送請求,防止跨站攻擊。自訂令牌儲存:允許將 CSRF 令牌儲存在 cookie、header 或會話中。

java框架如何防止CSRF攻擊

Java 框架如何防止 CSRF 攻擊

#什麼是 CSRF 攻擊?

跨站請求偽造 (CSRF) 攻擊是一種網路攻擊,攻擊者誘騙受害者在一個網站上執行操作,而受害者並不知情。攻擊者利用了受害者的會話 Cookie 來冒充他們的身份。

Java 框架如何防止 CSRF 攻擊?

Spring MVC 和JSF 等Java 框架提供了多種機制來防止CSRF 攻擊:

##」令牌驗證

  • Spring MVC:使用@CsrfToken 註解在控制器方法上產生CSRF 令牌。
  • JSF:使用 標籤產生 CSRF 令牌。

Same-Origin 策略

    #確保瀏覽器只向其原始來源(即從該頁面載入的HTML 文件所在的伺服器)傳送請求。
  • Spring Security 提供了
  • CsrfConfigurer 配置,可指定需要 CSRF 保護的 URL。
  • JSF 使用
  • csrfTokenValidator 來驗證 CSRF 令牌並阻止跨網域請求。

自訂令牌儲存

    可以將 CSRF 令牌儲存在 cookie、header 或會話中。
  • Spring MVC 和 JSF 都允許透過配置
  • CsrfFilterCsrfTokenRepository 來自定義令牌儲存。

實戰案例:Spring MVC

#1. 安裝依賴項:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>5.5.7</version>
</dependency>

2.設定Spring Security:

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
            .and()
            // 其他安全配置
        ;
    }
}

3. 在控制器方法上產生令牌:

@RequestMapping("/transferMoney")
@PostMapping
public String transferMoney(@RequestParam int amount, @CsrfToken String csrfToken) {
    // 验证令牌
    csrfTokenManager.verifyToken(csrfToken);
    
    // 执行转账操作
}

4. 在HTML 頁面中新增令牌:

<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>

以上是java框架如何防止CSRF攻擊的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn