Heim  >  Artikel  >  Java  >  Einführung in die Methode von SpringSecurity zum Umgang mit CSRF-Angriffen

Einführung in die Methode von SpringSecurity zum Umgang mit CSRF-Angriffen

不言
不言nach vorne
2019-03-06 15:37:513296Durchsuche

Dieser Artikel bietet Ihnen eine beispielhafte Erklärung von Djangos FBV und CBV. Ich hoffe, dass er für Freunde in Not hilfreich ist.

Aktueller Status der CSRF-Schwachstellen

CSRF (Cross-site request forgery) Cross-site request forgery, auch bekannt als One Click Attack oder Session Riding, meist abgekürzt als CSRF oder XSRF ist eine böswillige Nutzung einer Website. Obwohl es wie Cross-Site-Scripting (XSS) klingt, unterscheidet es sich stark von XSS, das vertrauenswürdige Benutzer innerhalb einer Site ausnutzt, und CSRF, das vertrauenswürdige Websites ausnutzt, indem es sich als Anfragen von vertrauenswürdigen Benutzern ausgibt. Im Vergleich zu XSS-Angriffen sind CSRF-Angriffe tendenziell weniger beliebt (daher sind auch die Ressourcen zu ihrer Verhinderung recht knapp) und schwer zu verhindern, sodass sie als gefährlicher als XSS gelten.
CSRF ist ein verschleierter Deputy-Angriff, der auf Webbrowsern basiert.

POM-Abhängigkeit

<!-- 模板引擎 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>

Filter konfigurieren

@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;
  }
}

Versteckte CSRF-Felder in der Formularanforderung hinzufügen

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

Header in AJAX-Anfrage hinzufügen

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

jQuerys globale Ajax-Konfiguration

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

Das obige ist der detaillierte Inhalt vonEinführung in die Methode von SpringSecurity zum Umgang mit CSRF-Angriffen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen