Maison >Java >javaDidacticiel >Introduction à la méthode SpringSecurity de gestion des attaques CSRF

Introduction à la méthode SpringSecurity de gestion des attaques CSRF

不言
不言avant
2019-03-06 15:37:513314parcourir

Ce que cet article vous apporte est un exemple d'explication du FBV et du CBV de Django. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

État actuel des vulnérabilités CSRF

falsification de requêtes intersites CSRF (Cross-site request forgery), également connue sous le nom d'attaque en un clic ou de session riding, généralement abrégée en CSRF ou XSRF est une utilisation malveillante d'un site Web. Bien que cela ressemble à du cross-site scripting (XSS), il est très différent du XSS, qui exploite des utilisateurs de confiance au sein d'un site, et du CSRF, qui exploite des sites Web de confiance en se faisant passer pour des requêtes d'utilisateurs de confiance. Par rapport aux attaques XSS, les attaques CSRF ont tendance à être moins populaires (les ressources pour les empêcher sont donc également assez rares) et difficiles à prévenir, elles sont donc considérées comme plus dangereuses que XSS.
CSRF est une attaque adjointe obscurcie qui s'appuie sur les navigateurs Web.

Dépendance 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>

Configurer le filtre

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

Ajouter CSRF dans la demande de formulaire Champs masqués

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

Ajouter des en-têtes dans les requêtes AJAX

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

Configuration globale Ajax de jQuery

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer