ホームページ  >  記事  >  Java  >  SpringSecurity による CSRF 攻撃の処理方法の紹介

SpringSecurity による CSRF 攻撃の処理方法の紹介

不言
不言転載
2019-03-06 15:37:513287ブラウズ

この記事では、Django の FBV と CBV についての説明例を紹介します。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

CSRF 脆弱性ステータス

CSRF (クロスサイト リクエスト フォージェリ) クロスサイト リクエスト フォージェリ。ワン クリック攻撃またはセッション ライディングとも呼ばれ、通常は CSRF またはセッション ライディングと略されます。 XSRF は Web サイトの悪意のある使用です。クロスサイト スクリプティング (XSS) のように聞こえますが、サイト内の信頼できるユーザーを悪用する XSS や、信頼できるユーザーからのリクエストを装って信頼できる Web サイトを悪用する CSRF とは大きく異なります。 XSS 攻撃と比較すると、CSRF 攻撃はあまり普及していない傾向があり (したがって、CSRF 攻撃を防ぐためのリソースも非常に不足しています)、防ぐのが難しいため、XSS よりも危険であると考えられています。
CSRF は、Web ブラウザーに依存する難読化されたプロキシ攻撃です。

POM 依存関係

<!-- 模板引擎 freemarker -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!-- Security (只使用CSRF部分) -->
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-web</artifactId>
</dependency>

構成フィルター

@SpringBootApplication
public class Application {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
  
  /**
   * 配置CSRF过滤器
   *
   * @return {@link org.springframework.boot.web.servlet.FilterRegistrationBean}
   */
  @Bean
  public FilterRegistrationBean<CsrfFilter> csrfFilter() {
    FilterRegistrationBean<CsrfFilter> registration = new FilterRegistrationBean<>();
    registration.setFilter(new CsrfFilter(new HttpSessionCsrfTokenRepository()));
    registration.addUrlPatterns("/*");
    registration.setName("csrfFilter");
    return registration;
  }
}

フォーム リクエストに CSRF 非表示フィールドを追加します

<input name="${(_csrf.parameterName)!}" value="${(_csrf.token)!}" type="hidden" />

AJAX リクエストにヘッダーを追加

xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");

jQuery の Ajax グローバル設定

jQuery.ajaxSetup({
  "beforeSend": function (request) {
    request.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
  }
});

以上がSpringSecurity による CSRF 攻撃の処理方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。