ホームページ  >  記事  >  Java  >  Java フレームワークが CSRF 攻撃を防ぐ方法

Java フレームワークが CSRF 攻撃を防ぐ方法

WBOY
WBOYオリジナル
2024-06-01 13:29:56796ブラウズ

Java フレームワークは、次のメカニズムを通じて CSRF 攻撃から保護します。 トークン検証: CSRF トークンを生成および検証して、リクエストが予想されるソースからのものであることを確認します。 Same-Origin ポリシー: ブラウザは、クロスサイト攻撃を防ぐために、元のオリジンにのみリクエストを送信します。カスタム トークン ストレージ: CSRF トークンを Cookie、ヘッダー、またはセッションに保存できます。

Java フレームワークが CSRF 攻撃を防ぐ方法

Java フレームワークが CSRF 攻撃を防ぐ方法

CSRF 攻撃とは何ですか?

クロスサイト リクエスト フォージェリ (CSRF) 攻撃は、攻撃者が被害者をだまして、被害者の知らないうちに Web サイト上でアクションを実行させるサイバー攻撃の一種です。攻撃者は被害者のセッション Cookie を使用して、被害者の身元を偽装しました。

Java フレームワークはどのようにして CSRF 攻撃を防止しますか?

Spring MVC や JSF などの Java フレームワークは、CSRF 攻撃を防ぐための複数のメカニズムを提供します:

トークン検証

  • Spring MVC: コントローラー メソッドで @CsrfToken アノテーションを使用する CSRF トークンを生成するの上 。 @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:

<inputsecret></inputsecret> タグを使用して CSRF トークンを生成します。

Same-Origin ポリシー

は、ブラウザが元のオリジン (つまり、ページからロードされた HTML ドキュメントが存在するサーバー) にのみリクエストを送信することを保証します。 Spring Security は、CSRF 保護を必要とする URL を指定するための CsrfConfigurer 構成を提供します。

JSF は csrfTokenValidator を使用して CSRF トークンを検証し、クロスオリジン リクエストをブロックします。

カスタムトークンストレージ

🎜CSRFトークンは、Cookie、ヘッダー、またはセッションに保存できます。 🎜🎜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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。