1. 程式人生 > >CSRF攻擊與防禦策略

CSRF攻擊與防禦策略

CSRF攻擊 


目錄 
1 CSRF攻擊簡介 1 
1.1 什麼是CSRF 1 
1.2 CSRF可以做什麼 1 
1.3 CSRF漏洞現狀 1 
2 CSRF的攻擊原理 1 
2.1 CSRF攻擊原理 1 
2.2 CSRF攻擊例項 2 
2.3 CSRF攻擊物件 3 
3 CSRF的防禦策略 3 
3.1 驗證HTTP REFERER欄位 3 
3.2 請求中新增TOKEN 4 
3.3 在HTTP頭中自定義屬性並驗證 5 
3.4 程式碼示例 6 


1 CSRF攻擊簡介 
1.1 什麼是CSRF 
CSRF(Cross-site request forgery),中文名稱:跨站請求偽造,也被稱為:one click attack/session riding,縮寫為:CSRF/XSRF。儘管聽起來像跨站指令碼(XSS), 但它與XSS非常不同,並且攻擊方式幾乎相左。XSS利用站點內的信任使用者,而CSRF則通過偽裝來自受信任使用者的請求來利用受信任的網站。與XSS攻擊 相比,CSRF攻擊往往不大流行(因此對其進行防範的資源也相當稀少)和難以防範,所以被認為比XSS更具危險性。 


1.2 CSRF可以做什麼 
你這可以這麼理解CSRF攻擊:攻擊者盜用了你的身份,以你的名義傳送惡意請求。CSRF能夠做的事情包括:以你名義傳送郵件,發訊息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬......造成的問題包括:個人隱私洩露以及財產安全。 

1.3 CSRF漏洞現狀 
CSRF這種攻擊方式在2000年已經被國外的安全人員提出,但在國內,直到06年才開始被關注,08年,國內外的多個大型社群和互動網站分別爆出 CSRF漏洞,如:NYTimes.com(紐約時報)、Metafilter(一個大型的BLOG網站),YouTube和百度HI......而現 在,網際網路上的許多站點仍對此毫無防備,以至於安全業界稱CSRF為“沉睡的巨人”。 


2 CSRF的攻擊原理 
2.1 CSRF攻擊原理 
CSRF攻擊原理如下圖所示: 



圖中Browse是瀏覽器,WebServerA是受信任網站/被攻擊網站A,WebServerB是惡意網站/攻擊網站B。 
(1),使用者開啟瀏覽器,訪問受信任網站A,輸入使用者名稱和密碼登陸請求登陸網站A。 
(2),網站A驗證使用者資訊,使用者資訊通過驗證後,網站A產生Cookie資訊並返回給瀏覽器。 
(3),使用者登陸網站A成功後,可以正常請求網站A。 
(4),使用者未退出網站A之前,在同一瀏覽器中,開啟一個TAB訪問網站B。 
(5),網站B接受到使用者請求後,返回一些攻擊性程式碼。 
(6),瀏覽器在接受到這些攻擊性程式碼後,促使使用者不知情的情況下瀏覽器攜帶Cookie(包括sessionId)資訊,請求網站A。這種請求有可能刪除,更新等操作。 


從上面CSRF攻擊原理可以看出,要完成一次CSRF攻擊,需要被攻擊者完成兩個步驟: 
1, 登陸受信任網站A,並在本地生成COOKIE。 
2, 在不登出A的情況下,訪問危險網站 B。 
看到這裡,你也許會說:“如果我不滿足以上兩個條件中的一個,我就不會受到CSRF的攻擊”。是的,確實如此,但你不能保證以下情況不會發生: 
1.你不能保證你登入了一個網站後,不再開啟一個tab頁面並訪問另外的網站。 
2.你不能保證你關閉瀏覽器了後,你本地的Cookie立刻過期,你上次的會話已經結束。(事實上,關閉瀏覽器不能結束一個會話,但大多數人都會錯誤的認為關閉瀏覽器就等於退出登入/結束會話了......) 
3.上圖中所謂的攻擊網站,可能是一個存在其他漏洞的可信任的經常被人訪問的網站。 

2.2 CSRF攻擊例項 
CSRF 攻擊可以在受害者毫不知情的情況下以受害者名義偽造請求傳送給受攻擊站點,從而在並未授權的情況下執行在許可權保護之下的操作。 
比如說,受害者 Bob 在銀行有一筆存款,通過對銀行的網站傳送請求 
http://bank.example/withdraw?account=bob&amount=1000000&for=bob2 
可以使 Bob 把 1000000 的存款轉到 bob2 的賬號下。通常情況下,該請求傳送到網站後,伺服器會先驗證該請求是否來自一個合法的 session,並且該 session 的使用者 Bob 已經成功登陸。 
黑客 Mallory 自己在該銀行也有賬戶,他知道上文中的 URL 可以把錢進行轉帳操作。Mallory 可以自己傳送一個請求給銀行: 
http://bank.example/withdraw?account=bob& amount=1000000&for=Mallory。 
但是這個請求來自 Mallory 而非 Bob,他不能通過安全認證,因此該請求不會起作用。 
這時,Mallory 想到使用 CSRF 的攻擊方式,他先自己做一個網站,在網站中放入如下程式碼: 
<img src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory” /> 
並且通過廣告等誘使 Bob 來訪問他的網站。當 Bob 訪問該網站時,上述 url 就會從 Bob 的瀏覽器發向銀行,而這個請求會附帶 Bob 瀏覽器中的 cookie 一起發向銀行伺服器。大多數情況下,該請求會失敗,因為他要求 Bob 的認證資訊。但是,如果 Bob 當時恰巧剛訪問他的銀行後不久,他的瀏覽器與銀行網站之間的 session 尚未過期,瀏覽器的 cookie 之中含有 Bob 的認證資訊。這時,悲劇發生了,這個 url 請求就會得到響應,錢將從 Bob 的賬號轉移到 Mallory 的賬號,而 Bob 當時毫不知情。等以後 Bob 發現賬戶錢少了,即使他去銀行查詢日誌,他也只能發現確實有一個來自於他本人的合法請求轉移了資金,沒有任何被攻擊的痕跡。而 Mallory 則可以拿到錢後逍遙法外。 

2.3 CSRF攻擊物件 
在討論如何抵禦 CSRF 之前,先要明確 CSRF 攻擊的物件,也就是要保護的物件。從以上的例子可知,CSRF 攻擊是黑客藉助受害者的 cookie 騙取伺服器的信任,但是黑客並不能拿到 cookie,也看不到 cookie 的內容。另外,對於伺服器返回的結果,由於瀏覽器同源策略的限制,黑客也無法進行解析。因此,黑客無法從返回的結果中得到任何東西,他所能做的就是給服務 器傳送請求,以執行請求中所描述的命令,在伺服器端直接改變資料的值,而非竊取伺服器中的資料。所以,我們要保護的物件是那些可以直接產生資料改變的服 務,而對於讀取資料的服務,則不需要進行 CSRF 的保護。比如銀行系統中轉賬的請求會直接改變賬戶的金額,會遭到 CSRF 攻擊,需要保護。而查詢餘額是對金額的讀取操作,不會改變資料,CSRF 攻擊無法解析伺服器返回的結果,無需保護。

3 CSRF的防禦策略 
在業界目前防禦 CSRF 攻擊主要有三種策略:驗證 HTTP Referer 欄位;在請求地址中新增 token 並驗證;在 HTTP 頭中自定義屬性並驗證。下面就分別對這三種策略進行詳細介紹。 
3.1 驗證HTTP Referer欄位 
根據 HTTP 協議,在 HTTP 頭中有一個欄位叫 Referer,它記錄了該 HTTP 請求的來源地址。在通常情況下,訪問一個安全受限頁面的請求來自於同一個網站,比如需要訪問 http://bank.example/withdraw?account=bob&amount=1000000& for=Mallory,使用者必須先登陸 bank.example,然後通過點選頁面上的按鈕來觸發轉賬事件。這時,該轉帳請求的 Referer 值就會是轉賬按鈕所在的頁面的 URL,通常是以 bank.example 域名開頭的地址。而如果黑客要對銀行網站實施 CSRF 攻擊,他只能在他自己的網站構造請求,當用戶通過黑客的網站傳送請求到銀行時,該請求的 Referer 是指向黑客自己的網站。因此,要防禦 CSRF 攻擊,銀行網站只需要對於每一個轉賬請求驗證其 Referer 值,如果是以 bank.example 開頭的域名,則說明該請求是來自銀行網站自己的請求,是合法的。如果 Referer 是其他網站的話,則有可能是黑客的 CSRF 攻擊,拒絕該請求。 
這種方法的顯而易見的好處就是簡單易行,網站的普通開發人員不需要操心 CSRF 的漏洞,只需要在最後給所有安全敏感的請求統一增加一個攔截器來檢查 Referer 的值就可以。特別是對於當前現有的系統,不需要改變當前系統的任何已有程式碼和邏輯,沒有風險,非常便捷。 
然而,這種方法並非萬無一失。Referer 的值是由瀏覽器提供的,雖然 HTTP 協議上有明確的要求,但是每個瀏覽器對於 Referer 的具體實現可能有差別,並不能保證瀏覽器自身沒有安全漏洞。使用驗證 Referer 值的方法,就是把安全性都依賴於第三方(即瀏覽器)來保障,從理論上來講,這樣並不安全。事實上,對於某些瀏覽器,比如 IE6 或 FF2,目前已經有一些方法可以篡改 Referer 值。如果 bank.example 網站支援 IE6 瀏覽器,黑客完全可以把使用者瀏覽器的 Referer 值設為以 bank.example 域名開頭的地址,這樣就可以通過驗證,從而進行 CSRF 攻擊。 
即便是使用最新的瀏覽器,黑客無法篡改 Referer 值,這種方法仍然有問題。因為 Referer 值會記錄下使用者的訪問來源,有些使用者認為這樣會侵犯到他們自己的隱私權,特別是有些組織擔心 Referer 值會把組織內網中的某些資訊洩露到外網中。因此,使用者自己可以設定瀏覽器使其在傳送請求時不再提供 Referer。當他們正常訪問銀行網站時,網站會因為請求沒有 Referer 值而認為是 CSRF 攻擊,拒絕合法使用者的訪問。 
這種方法在瀏覽器相容方面也存在很大的問題,FF瀏覽器在向伺服器傳送請求時,http頭資訊中能自帶referer欄位資訊,但是IE瀏覽器就不一定了,在IE瀏覽器中有些請求是不會在http頭資訊中攜帶referer欄位資訊,如請求用js進行跳轉,在IE下不能記錄referer,但在ff下是可以的。如下: 
Java程式碼  收藏程式碼
  1. <script>window.location.href="http://localhost"</script>  
  2. 結果:仍不帶referer  
  3. <form name="f1" action="http://localhost" >  
  4. </form>  
  5. <script>document.f1.submit;</script>  
  6. 結果:仍不帶referer  



3.2 請求中新增Token 
CSRF 攻擊之所以能夠成功,是因為黑客可以完全偽造使用者的請求,該請求中所有的使用者驗證資訊都是存在於 cookie 中,因此黑客可以在不知道這些驗證資訊的情況下直接利用使用者自己的 cookie 來通過安全驗證。要抵禦 CSRF,關鍵在於在請求中放入黑客所不能偽造的資訊,並且該資訊不存在於 cookie 之中。可以在 HTTP 請求中以引數的形式加入一個隨機產生的 token,並在伺服器端建立一個攔截器來驗證這個 token,如果請求中沒有 token 或者 token 內容不正確,則認為可能是 CSRF 攻擊而拒絕該請求。 
這種方法要比檢查 Referer 要安全一些,token 可以在使用者登陸後產生並放於 session 之中,然後在每次請求時把 token 從 session 中拿出,與請求中的 token 進行比對,但這種方法的難點在於如何把 token 以引數的形式加入請求。對於 GET 請求,token 將附在請求地址之後,這樣 URL 就變成 http://url?csrftoken=tokenvalue。 而對於 POST 請求來說,要在 form 的最後加上 <input type=”hidden” name=”csrftoken” value=”tokenvalue”/>,這樣就把 token 以引數的形式加入請求了。但是,在一個網站中,可以接受請求的地方非常多,要對於每一個請求都加上 token 是很麻煩的,並且很容易漏掉,通常使用的方法就是在每次頁面載入時,使用 javascript 遍歷整個 dom 樹,對於 dom 中所有的 a 和 form 標籤後加入 token。這樣可以解決大部分的請求,但是對於在頁面載入之後動態生成的 html 程式碼,這種方法就沒有作用,還需要程式設計師在編碼時手動新增 token。 
該方法還有一個缺點是難以保證 token 本身的安全。特別是在一些論壇之類支援使用者自己發表內容的網站,黑客可以在上面釋出自己個人網站的地址。由於系統也會在這個地址後面加上 token,黑客可以在自己的網站上得到這個 token,並馬上就可以發動 CSRF 攻擊。為了避免這一點,系統可以在新增 token 的時候增加一個判斷,如果這個連結是鏈到自己本站的,就在後面新增 token,如果是通向外網則不加。不過,即使這個 csrftoken 不以引數的形式附加在請求之中,黑客的網站也同樣可以通過 Referer 來得到這個 token 值以發動 CSRF 攻擊。這也是一些使用者喜歡手動關閉瀏覽器 Referer 功能的原因。 


3.3 在HTTP頭中自定義屬性並驗證 
這種方法也是使用 token 並進行驗證,和上一種方法不同的是,這裡並不是把 token 以引數的形式置於 HTTP 請求之中,而是把它放到 HTTP 頭中自定義的屬性裡。通過 XMLHttpRequest 這個類,可以一次性給所有該類請求加上 csrftoken 這個 HTTP 頭屬性,並把 token 值放入其中。這樣解決了上種方法在請求中加入 token 的不便,同時,通過 XMLHttpRequest 請求的地址不會被記錄到瀏覽器的位址列,也不用擔心 token 會透過 Referer 洩露到其他網站中去。 
然而這種方法的侷限性非常大。XMLHttpRequest 請求通常用於 Ajax 方法中對於頁面區域性的非同步重新整理,並非所有的請求都適合用這個類來發起,而且通過該類請求得到的頁面不能被瀏覽器所記錄下,從而進行前進,後退,重新整理,收藏 等操作,給使用者帶來不便。另外,對於沒有進行 CSRF 防護的遺留系統來說,要採用這種方法來進行防護,要把所有請求都改為 XMLHttpRequest 請求,這樣幾乎是要重寫整個網站,這代價無疑是不能接受的。 


3.4 程式碼示例 
下文將以 Java 為例,對上述三種方法分別用程式碼進行示例。無論使用何種方法,在伺服器端的攔截器必不可少,它將負責檢查到來的請求是否符合要求,然後視結果而決定是否繼 續請求或者丟棄。在 Java 中,攔截器是由 Filter 來實現的。我們可以編寫一個 Filter,並在 web.xml 中對其進行配置,使其對於訪問所有需要 CSRF 保護的資源的請求進行攔截。 
在 filter 中對請求的 Referer 驗證程式碼如下 

清單 1. 在 Filter 中驗證 Referer 

Java程式碼  收藏程式碼
  1. // 從 HTTP 頭中取得 Referer 值  
  2.  String referer=request.getHeader("Referer");   
  3.  // 判斷 Referer 是否以 bank.example 開頭  
  4.  if((referer!=null) &&(referer.trim().startsWith(“bank.example”))){   
  5.     chain.doFilter(request, response);   
  6.  }else{   
  7.     request.getRequestDispatcher(“error.jsp”).forward(request,response);   
  8.  }   


以上程式碼先取得 Referer 值,然後進行判斷,當其非空並以 bank.example 開頭時,則繼續請求,否則的話可能是 CSRF 攻擊,轉到 error.jsp 頁面。 
如果要進一步驗證請求中的 token 值,程式碼如下 

清單 2. 在 filter 中驗證請求中的 token 

Java程式碼  收藏程式碼
  1. HttpServletRequest req = (HttpServletRequest)request;   
  2.  HttpSession s = req.getSession();   
  3.  // 從 session 中得到 csrftoken 屬性  
  4.  String sToken = (String)s.getAttribute(“csrftoken”);   
  5.  if(sToken == null){   
  6.     // 產生新的 token 放入 session 中  
  7.     sToken = generateToken();   
  8.     s.setAttribute(“csrftoken”,sToken);   
  9.     chain.doFilter(request, response);   
  10.  } else{   
  11.     // 從 HTTP 頭中取得 csrftoken   
  12.     String xhrToken = req.getHeader(“csrftoken”);   
  13.     // 從請求引數中取得 csrftoken   
  14.     String pToken = req.getParameter(“csrftoken”);   
  15.     if(sToken != null && xhrToken != null && sToken.equals(xhrToken)){   
  16.         chain.doFilter(request, response);   
  17.     }else if(sToken != null && pToken != null && sToken.equals(pToken)){   
  18.         chain.doFilter(request, response);   
  19.     }else{   
  20.         request.getRequestDispatcher(“error.jsp”).forward(request,response);   
  21.     }   
  22.  }   


首先判斷 session 中有沒有 csrftoken,如果沒有,則認為是第一次訪問,session 是新建立的,這時生成一個新的 token,放於 session 之中,並繼續執行請求。如果 session 中已經有 csrftoken,則說明使用者已經與伺服器之間建立了一個活躍的 session,這時要看這個請求中有沒有同時附帶這個 token,由於請求可能來自於常規的訪問或是 XMLHttpRequest 非同步訪問,我們分別嘗試從請求中獲取 csrftoken 引數以及從 HTTP 頭中獲取 csrftoken 自定義屬性並與 session 中的值進行比較,只要有一個地方帶有有效 token,就判定請求合法,可以繼續執行,否則就轉到錯誤頁面。生成 token 有很多種方法,任何的隨機演算法都可以使用,Java 的 UUID 類也是一個不錯的選擇。 
除了在伺服器端利用 filter 來驗證 token 的值以外,我們還需要在客戶端給每個請求附加上這個 token,這是利用 js 來給 html 中的連結和表單請求地址附加 csrftoken 程式碼,其中已定義 token 為全域性變數,其值可以從 session 中得到。 

清單 3. 在客戶端對於請求附加 token 

Java程式碼  收藏程式碼
  1. function appendToken(){   
  2.     updateForms();   
  3.     updateTags();   
  4.  }   
  5.  function updateForms() {   
  6.     // 得到頁面中所有的 form 元素  
  7.     var forms = document.getElementsByTagName('form');   
  8.     for(i=0; i<forms.length; i++) {   
  9.         var url = forms[i].action;   
  10.         // 如果這個 form 的 action 值為空,則不附加 csrftoken   
  11.         if(url == null || url == "" ) continue;   
  12.         // 動態生成 input 元素,加入到 form 之後  
  13.         var e = document.createElement("input");   
  14.         e.name = "csrftoken";   
  15.         e.value = token;   
  16.         e.type="hidden";   
  17.         forms[i].appendChild(e);   
  18.     }   
  19.  }   
  20.  function updateTags() {   
  21.     var all = document.getElementsByTagName('a');   
  22.     var len = all.length;   
  23.     // 遍歷所有 a 元素  
  24.     for(var i=0; i<len; i++) {   
  25.         var e = all[i];   
  26.         updateTag(e, 'href', token);   
  27.     }   
  28.  }   
  29.  function updateTag(element, attr, token) {   
  30.     var location = element.getAttribute(attr);   
  31.     if(location != null && location != '' '' ) {   
  32.         var fragmentIndex = location.indexOf('#');   
  33.         var fragment = null;   
  34.         if(fragmentIndex != -1){   
  35.             //url 中含有隻相當頁的錨標記  
  36.             fragment = location.substring(fragmentIndex);   
  37.             location = location.substring(0,fragmentIndex);   
  38.         }   
  39.         var index = location.indexOf('?');   
  40.         if(index != -1) {   
  41.             //url 中已含有其他引數  
  42.             location = location + '&csrftoken=' + token;   
  43.         } else {   
  44.             //url 中沒有其他引數  
  45.             location = location + '?csrftoken=' + token;   
  46.         }   
  47.         if(fragment != null){   
  48.             location += fragment;   
  49.         }   
  50.         element.setAttribute(attr, location);   
  51.     }   
  52.  }   


在客戶端 html 中,主要是有兩個地方需要加上 token,一個是表單 form,另一個就是連結 a。這段程式碼首先遍歷所有的 form,在 form 最後新增一隱藏欄位,把 csrftoken 放入其中。然後,程式碼遍歷所有的連結標記 a,在其 href 屬性中加入 csrftoken 引數。注意對於 a.href 來說,可能該屬性已經有引數,或者有錨標記。因此需要分情況討論,以不同的格式把 csrftoken 加入其中。 
如果你的網站使用 XMLHttpRequest,那麼還需要在 HTTP 頭中自定義 csrftoken 屬性,利用 dojo.xhr 給 XMLHttpRequest 加上自定義屬性程式碼如下: 

清單 4. 在 HTTP 頭中自定義屬性 

Java程式碼  收藏程式碼

    相關推薦

    CSRF攻擊防禦策略

    CSRF攻擊 目錄 1 CSRF攻擊簡介 1 1.1 什麼是CSRF 1 1.2 CSRF可以做什麼 1 1.3 CSRF漏洞現狀 1 2 CSRF的攻擊原理 1 2.1 CSRF攻擊原理 1 2.2 CSRF攻擊例項 2 2.3 CSRF攻擊物件 3 3 CSRF的防禦策

    CSRF攻擊防禦(寫得非常好)

    得到 cookie信息 req ret 沒有 不同的 sof 協議 表單 轉載地址:http://www.phpddt.com/reprint/csrf.html CSRF概念:CSRF跨站點請求偽造(Cross—Site Request Forger

    CSRF攻擊防禦

    動態 開發 開關 如何 1、簡介  CSRF的全名為Cross-site request forgery,它的中文名為 跨站請求偽造(偽造跨站請求【這樣讀順口一點】)  CSRF是一種夾持用戶在已經登陸的web應用程序上執行非本意的操作的攻擊方式。相比於XSS,CSRF是利用了系統對頁面瀏覽器

    CSRF攻擊防禦(轉)

    修改 javascrip 系統管理 用戶信息 原理 輸入 查詢 虛擬貨幣 不知道 CSRF概念:CSRF跨站點請求偽造(Cross—Site Request Forgery),跟XSS攻擊一樣,存在巨大的危害性,你可以這樣來理解: 攻擊者盜用了你的身份,以你

    CSRF攻擊防禦原理

    請求偽造 dom pos csrf put ... 服務 功能 問題 CSRF是什麽? (Cross Site Request Forgery, 跨站域請求偽造)是一種網絡的攻擊方式,它在 2007 年曾被列為互聯網 20 大安全隱患之一,也被稱為“One Click A

    轉-CSRF——攻擊防禦

    0x01 什麼是CSRF攻擊     CSRF是Cross Site Request Forgery的縮寫(也縮寫為XSRF),直譯過來就是跨站請求偽造的意思,也就是在使用者會話下對某個CGI做一些GET/POST的事情——這些事情使用者未必知道和願意做,你可以把它想做HTTP

    深入理解CSRF攻擊防禦

    What is CSRF 首先可以先看一段英文原文介紹: Cross Site Reference Forgery works by including malicious code or a link in a page that accesses a we

    WEB攻擊CSRF 攻擊防禦策略

    介紹 是一種挾制使用者在當前已登入的Web應用程式上執行非本意的操作的攻擊方法。 釋義: 跨站請求攻擊,簡單地說,是攻擊者通過一些技術手段欺騙使用者的瀏覽器去訪問一個自己曾經認證過的網站並執行一些操作(如發郵件,發訊息,甚至財產操作如轉賬和購買商品)。由於瀏覽器曾經認證過,所以被訪問的網站會認為是真正的使

    CSRF,XSS攻擊防禦

     CSRF概念:CSRF跨站點請求偽造(Cross—Site Request Forgery),跟XSS攻擊一樣,存在巨大的危害性,你可以這樣來理解:        攻擊者盜用了你的身份,以你的名義傳送惡意請求,對伺服器來說這個請求是完全合法的,

    xss攻擊防禦

    font 引號 span java 額外 有意義 tab 有意 script 除了在引號中分割單詞和強制結束語句外,額外的空格沒有意義。 >>>>>>java script : alert 同理 換行符/tab

    DDoS攻擊防範策略

    公司 pread 軟件 狀態信息 黑名單 協同工作 acl策略 etc yun DDoS(Distributed Denial of Service,分布式拒絕服務)攻擊的主要目的是讓指定目標無法提供正常服務,甚至從互聯網上消失,是目前最強大、最難防禦的攻擊之一。 按照發起

    XXE漏洞攻擊防禦

    swe factor 參數 tor 類別 bash pin tps start 轉自https://www.jianshu.com/p/7325b2ef8fc9 0x01 XML基礎 在聊XXE之前,先說說相關的XML知識吧。 定義 XML用於標記電子文件使其具有結

    Java反序列化漏洞的挖掘、攻擊防禦

    body per 所有 http 操作 www except ride 方法 一、Java反序列化漏洞的挖掘 1、黑盒流量分析: 在Java反序列化傳送的包中,一般有兩種傳送方式,在TCP報文中,一般二進制流方式傳輸,在HTTP報文中,則大多以base64傳輸。因而在流量中

    實戰講解XXE漏洞的利用防禦策略

    gcd oam copyright 解析xml MQ 包括 實驗 將他 Coding 現在許多不同的客戶端技術都可以使用XMl向業務應用程序發送消息,為了使應用程序使用自定義的XML消息,應用程序必須先去解析XML文檔,並且檢查XML格式是否正確。當解析器允許XML外部實體

    csrf 攻擊防禦

    三方 信息 局限 密碼 鏈接 自己的 缺點 csdn stat CSRF概念:CSRF跨站點請求偽造(Cross—Site Request Forgery),跟XSS攻擊一樣,存在巨大的危害性,你可以這樣來理解: 攻擊者盜用了你的身份,以你的名義發送惡意請求,

    CSRF理解防禦

    class 利用 .org 前後端分離 xss 網站攻擊 image 相關 能夠 一、說明 記得以前去面試技術也不太會但你總得講點東西,讓面試時間長一些讓面試官覺得你基礎還可以,當時選的就是名頭比較大的OWASP TOP 10。TOP 10嘛你總得拿出至少三個點來講的細一些

    網路攻擊防禦技術第三次實驗

    中國人民公安大學 Chinese people’ public security university   網路對抗技術 實驗報告   實驗三 密碼破解技術     &

    網路攻擊防禦技術第四次實驗

        中國人民公安大學 Chinese people' public security university     網路對抗技術 實驗報告      

    網路攻擊防禦技術第五次實驗

    中國人民公安大學 Chinese people’ public security university   網路對抗技術 實驗報告   實驗五 綜合滲透     &nb

    Liunx防火牆--iptables(二)攻擊防禦

    網路層攻擊的定義       網路層攻擊定義為:通過傳送濫用網路層的首部欄位的一個或者一系列的資料包以利用網路棧漏洞或消耗網路層資源進行攻擊。 1.首部濫用:包含有惡意構造的,損壞的或經過非法改造的網路層首部的資料包。(如虛假源ip地址,