欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring security CSRF防護的示例代碼

 更新時間:2019年03月08日 14:28:08   作者:yjclsx  
這篇文章主要介紹了spring security CSRF防護的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

CSRF是指跨站請求偽造(Cross-site request forgery),是web常見的攻擊之一。

從Spring Security 4.0開始,默認情況下會啟用CSRF保護,以防止CSRF攻擊應用程序,Spring Security CSRF會針對PATCH,POST,PUT和DELETE方法進行防護。

我這邊是spring boot項目,在啟用了@EnableWebSecurity注解后,csrf保護就自動生效了。

所以在默認配置下,即便已經(jīng)登錄了,頁面中發(fā)起PATCH,POST,PUT和DELETE請求依然會被拒絕,并返回403,需要在請求接口的時候加入csrfToken才行。

如果你使用了freemarker之類的模板引擎或者jsp,針對表單提交,可以在表單中增加如下隱藏域:

<input type = “hidden” name = “${_csrf.parameterName}” value = “${_csrf.token}” /> 

如果您使用的是JSON,則無法在HTTP參數(shù)中提交CSRF令牌。相反,您可以在HTTP頭中提交令牌。一個典型的模式是將CSRF令牌包含在元標記中。下面顯示了一個JSP示例:

<html> 
<head> 
  <meta name = “_csrf” content = “${_csrf.token}” /> 
  <!-- 默認標題名稱是X-CSRF-TOKEN --> 
  <meta name = “_csrf_header” content = “${_csrf.headerName}” /> 
</ head> 

然后,您可以將令牌包含在所有Ajax請求中。如果您使用jQuery,可以使用以下方法完成此操作:

var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$.ajax({
  url:url,
  type:'POST',
  async:false,
  dataType:'json',  //返回的數(shù)據(jù)格式:json/xml/html/script/jsonp/text
  beforeSend: function(xhr) {
    xhr.setRequestHeader(header, token); //發(fā)送請求前將csrfToken設(shè)置到請求頭中
  },
  success:function(data,textStatus,jqXHR){
  }
});

如果你不想啟用CSRF保護,可以在spring security配置中取消csrf,如下:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        .antMatchers("/login").permitAll()
        .anyRequest().authenticated()
        .and()
        ...
    http.csrf().disable(); //取消csrf防護
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MybatisPlus中的刪除和邏輯刪除及區(qū)別介紹

    MybatisPlus中的刪除和邏輯刪除及區(qū)別介紹

    這篇文章主要介紹了MybatisPlus中的刪除和邏輯刪除的相關(guān)知識,刪除又分為邏輯刪除和物理刪除,那么它們有什么區(qū)別呢?在本文給大家詳細介紹,感興趣的朋友跟隨小編一起看看吧
    2020-08-08
  • SpringBoot為啥不用配置啟動類的實現(xiàn)

    SpringBoot為啥不用配置啟動類的實現(xiàn)

    這篇文章主要介紹了SpringBoot為啥不用配置啟動類的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 詳解spring security之httpSecurity使用示例

    詳解spring security之httpSecurity使用示例

    這篇文章主要介紹了詳解spring security之httpSecurity使用示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Java使用強大的Elastisearch搜索引擎實例代碼

    Java使用強大的Elastisearch搜索引擎實例代碼

    本篇文章主要介紹了Java使用強大的Elastisearch搜索引擎實例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-05-05
  • IntelliJ IDEA中Scala、sbt、maven配置教程

    IntelliJ IDEA中Scala、sbt、maven配置教程

    這篇文章主要介紹了IntelliJ IDEA中Scala、sbt、maven配置教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Idea如何去除Mapper警告方法解析

    Idea如何去除Mapper警告方法解析

    這篇文章主要介紹了Idea如何去除Mapper 警告的方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot微信消息接口配置詳解

    SpringBoot微信消息接口配置詳解

    這篇文章主要介紹了SpringBoot 微信消息接口配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-06-06
  • 在Java編程中定義方法

    在Java編程中定義方法

    這篇文章主要介紹了在Java編程中定義方法,是Java入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • IDEA解決maven包沖突easypoi NoClassDefFoundError的問題

    IDEA解決maven包沖突easypoi NoClassDefFoundError的問題

    這篇文章主要介紹了IDEA解決maven包沖突easypoi NoClassDefFoundError的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • spring應用中多次讀取http post方法中的流遇到的問題

    spring應用中多次讀取http post方法中的流遇到的問題

    這篇文章主要介紹了spring應用中多次讀取http post方法中的流,文中給大家列舉處理問題描述及解決方法,需要的朋友可以參考下
    2018-11-11

最新評論