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

不言
リリース: 2019-03-06 15:37:51
転載
3298 人が閲覧しました

この記事では、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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート