Java フレームワークは、次のメカニズムを通じて CSRF 攻撃から保護します。 トークン検証: CSRF トークンを生成および検証して、リクエストが予想されるソースからのものであることを確認します。 Same-Origin ポリシー: ブラウザは、クロスサイト攻撃を防ぐために、元のオリジンにのみリクエストを送信します。カスタム トークン ストレージ: CSRF トークンを Cookie、ヘッダー、またはセッションに保存できます。
CSRF 攻撃とは何ですか?
クロスサイト リクエスト フォージェリ (CSRF) 攻撃は、攻撃者が被害者をだまして、被害者の知らないうちに Web サイト上でアクションを実行させるサイバー攻撃の一種です。攻撃者は被害者のセッション Cookie を使用して、被害者の身元を偽装しました。
Java フレームワークはどのようにして CSRF 攻撃を防止しますか?
Spring MVC や JSF などの Java フレームワークは、CSRF 攻撃を防ぐための複数のメカニズムを提供します:
トークン検証
@CsrfToken
アノテーションを使用する CSRF トークンを生成するの上 。 @CsrfToken
注释在控制器方法上生成 CSRF 令牌。<inputsecret></inputsecret>
标签生成 CSRF 令牌。Same-Origin 策略
CsrfConfigurer
配置,可指定需要 CSRF 保护的 URL。csrfTokenValidator
来验证 CSRF 令牌并阻止跨域请求。自定义令牌存储
CsrfFilter
和 CsrfTokenRepository
<inputsecret></inputsecret>
タグを使用して CSRF トークンを生成します。
Same-Origin ポリシー
は、ブラウザが元のオリジン (つまり、ページからロードされた HTML ドキュメントが存在するサーバー) にのみリクエストを送信することを保証します。 Spring Security は、CSRF 保護を必要とする URL を指定するための CsrfConfigurer
構成を提供します。
JSF は csrfTokenValidator
を使用して CSRF トークンを検証し、クロスオリジン リクエストをブロックします。
カスタムトークンストレージ
🎜CSRFトークンは、Cookie、ヘッダー、またはセッションに保存できます。 🎜🎜Spring MVC と JSF の両方で、CsrfFilter
と CsrfTokenRepository
を構成することでトークン ストレージをカスタマイズできます。 🎜🎜🎜🎜実際のケース: Spring MVC🎜🎜🎜🎜1. 依存関係をインストールする: 🎜🎜<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>
以上がJava フレームワークが CSRF 攻撃を防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。