この記事では、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 サイトの他の関連記事を参照してください。