1. 程式人生 > >什麼是CSRF?可能多數人都不清楚,沒事,一起來了解!!!

什麼是CSRF?可能多數人都不清楚,沒事,一起來了解!!!

        CSRF即跨站請求攻擊。簡單的說,是攻擊者通過一些技術手段欺騙使用者的瀏覽器去訪問一個自己以前認證過的站點並執行一些操作(如發郵件,發訊息,甚至財產操作(如轉賬和購買商品))。因為瀏覽器之前認證過,所以被訪問的站點會絕點是這是真正的使用者操作而去執行。

        這就利用了web中使用者身份認證驗證的一個漏洞:簡單的身份驗證僅僅能保證請求發自某個使用者的瀏覽器,卻不能保證請求本身是使用者自願發出的。

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


        一、CSRF原理


        從上圖能夠看出,要完畢一次CSRF攻擊,受害者必須依次完畢兩個步驟:

            登入受信任站點A,並在本地生成Cookie。

            在不登出A的情況下,訪問危急站點B。

        二、常見的攻擊型別

            危急站點B:它裡面有一段HTML的程式碼例如以下:

<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

         首先。你登入了銀行站點A,然後訪問危急站點B,噢,這時你會發現你的銀行賬戶少了1000塊

            為什麼會這樣呢?原因是銀行站點A違反了HTTP規範,使用GET請求更新資源。

            在訪問危急站點B的之前。你已經登入了銀行站點A,而B中的 一個合法的請求,但這裡被不法分子利用了)。所以你的瀏覽器會帶上你的銀行站點A的Cookie發出Get請求,去獲取資源以GET的方式請求第三方資源(這裡的第三方就是指銀行站點了,原本這是http://www.mybank.com/Transfer.php?toBankId=11&money=1000 ,結果銀行站點伺服器收到請求後,覺得這是一個更新資源操作(轉賬操作),所以就立馬進行轉賬操作。

        2、POST型別的CSRF

            如圖解所示

        三、如何防禦CSRF

            1、提交驗證碼

   在表單中新增一個隨機的數字或字母驗證碼。通過強制使用者和應用進行互動。來有效地遏制CSRF攻擊。

            2、Referer Check

                    檢查假設是非正常頁面過來的請求,則極有可能是CSRF攻擊。

            3、token驗證

                    (1)在 HTTP 請求中以引數的形式新增一個隨機產生的 token,並在伺服器端建立一個攔截器來驗證這個 token,假設請求中沒有 token 或者 token 內容不對,則覺得可能是 CSRF 攻擊而拒絕該請求。

                    (2)token必須足夠隨機

                    (3)敏感的操作應該使用POST,而不是GET。比如表單提交。

            4、在HTTP頭中自己定義屬性並驗證

                    這樣的方法也是使用 token 並進行驗證。這裡並非把 token 以引數的形式置於 HTTP 請求之中,而是把它放到 HTTP 頭中自己    定義的屬性裡。通過 XMLHttpRequest 這個類,能夠一次性給全部該類請求加上 csrftoken 這個 HTTP 頭屬性。並把 token 值放入當中。這樣攻克了上種方法在請求中新增 token 的不便。同一時候,通過 XMLHttpRequest 請求的地址不會被記錄到瀏覽器的位址列,也不用操心 token 會透過 Referer 洩露到其它站點中去。

        四、關於web跨域Post使用token思路

            1、移動端登入時,服務端驗證表單資訊。登入成功,生成token,返回給client

            2、client將token存在localstorage/sessionstorage中,每次提交表單,必須要攜帶token

            3、服務端獲取請求,如果沒有token忽略請求

相關推薦

什麼是CSRF可能多數清楚沒事起來

        CSRF即跨站請求攻擊。簡單的說,是攻擊者通過一些技術手段欺騙使用者的瀏覽器去訪問一個自己以前認證過的站點並執行一些操作(如發郵件,發訊息,甚至財產操作(如轉賬和購買商品))。因為瀏覽器之前認證過,所以被訪問的站點會絕點是這是真正的使用者操作而去執行。    

學習程式設計要注意的幾個地方據說大部分清楚

這裡請容許小編推薦一個學C/C++的學習群 941636044 如今正是網際網路快速發展的時代,程式設計師這一崗位也是備受歡迎。雖然程式設計師的工作強度大時間長但是重在待遇優厚啊,在現今的網際網路時代那個企業做事情不需要網際網路的,而有網際網路就必有程式設計師。但是大部分小

震驚很多知道 CSS Grid 框架早就有

![](https://img2020.cnblogs.com/blog/999445/202011/999445-20201108224642309-874784610.jpg) ## 前言 寫作本文起源於知乎的一個問題:【[CSS Grid 佈局那麼好,為什麼至今沒有人開發出基於 Grid 佈局的前

起來TCP的三次握手四次揮手

        瞭解TCP首先要簡單瞭解OSI七層模型。OSI(開放系統互聯)把網路通訊分為7層,即物理層、資料鏈層、網路層、傳輸層、會話層、表示層、應用層。HTTP是客戶端瀏覽器或其他程式與web伺服器之間的應用層通訊協議,TCP/IP是在傳輸層用TCP協議的規則進行的封裝

80%的會注意的這個東西卻有可能讓汽車壽命減半在減半

我們通常認為發動機是汽車的心臟,所以在平常保養汽車是也是多加關照,而在發動機上有這樣一個東西,基本沒人特別關注,卻被稱為發動機的心臟,那就是火花塞。 火花塞因材質、型別的不同,因此在使用壽命和價格差距都是比較大的。像售價只有幾十塊錢的鎳合金火花塞,在使用1.

大多數可能會使用socketTimeout底層才知道一直做錯

  前幾天一個機房網路抖動,引發了很多對外請求的超時問題,在發生問題排查日誌的時候,發現了這麼一個現象,httpclient我們的請求超時時間並沒有按照我們的設定報超時異常 我們的大概配置如下: RequestConfig requestConfig = RequestConfig.custom()

這個季節吃茄子能治療7種疾病很多知道

otto nor 也有 5.6 cal span .cn http enter 這個季節吃茄子能治療7種疾病,很多人都不知道! 2016-04-26 都市報道擴大版 茄子的功效有什麽?茄子含有維生素E,有防止出血和抗衰老功能,常吃茄子,可使血液中膽固醇水

剛剛遇到的幾道題感覺自己還是有很多的知識點清楚記錄下

第一道 var myObject = { foo: "bar", func: function() { var self = this; console.log(this.foo);   console.log(self.foo);   (function(

有n個帶編號的人和n個帶編號的座位求每個坐在相同號碼座位的方案數目

題目描述:     有 n 位同學編號分別為1, 2, ..., n; 有 n 個座位編號分別為1, 2, ..., n。     現在為每一位同學安排一個座位,求每個同學都坐在與自己編號不同的座位的方案數目。 分析:動態規劃思想:     假設 i 位同學,i 個座

背景圖定位實現視覺錯屏效果一般知道的效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <

推薦3個微信小工具99%的知道

微信這個不多說,現在已經成為了一款超級 APP,幾乎是每個人手上都會有的 APP,但是大家都知道它是一款社交工具,支付工具,大多都是用來聊天,刷朋友圈,移動支付,但是其實微信有很多的小工具讓我們使用,而且超級方便好用,不過幾乎沒有人知道。 今天我們就告訴大家一個

2017年IT年終總結一個知道的你這年就白過

作者:程式猿(ID:imkuqin) 猿妹移動互聯時代,每天都會湧現大量新詞熱詞,我們IT圈也不

99%的知道的Python整理檔案方法效率提升100倍

    現在人們經常要去下載或者接收一些檔案。 比如說同事傳來的文件,自己建立的檔案,想看的電影等等,那大家都會怎麼處理這些檔案呢? 科研工作者、學生們可能需要閱讀大量的文獻,我們也需要閱讀很多的電子書等等,這些檔案你又是如何處理的呢? 是一一歸類好

美妝蛋的隱藏使用技能99%的

美妝蛋在彩妝圈兒風靡已不是一年兩年了,從剛開始問世到如今,已經有越來越多的姑娘選擇用這款小道具上妝。 但是美妝蛋真正的用法你又瞭解多少呢?這次我們就來給大家科普一個全面的美妝蛋使用攻略,請收藏!! 美妝蛋的材質: 真正好品質的美妝蛋是不含致敏性乳膠的,而且海綿質地細

這樣的單點登入才最有效果很多大咖牛知道

導讀:單點登入,是指在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。本文從友戶通單點登入型別、認證安全以及應用整合的角度,聊下解決複雜場景下的單點登入方案。隨著雲端計算的飛速發展,越來越多的雲應用、雲服務充斥在日常的工作當中。人們在享受資訊化帶來的便捷的同時,也遭受著應用系統反覆登入,

這樣的單點登錄才最有效果很多大咖牛知道

roc 廣泛 ldap 支持跨域 jsonp 多次 社會化 而且 存在 導讀:單點登錄,是指在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。本文從友戶通單點登錄類型、認證安全以及應用集成的角度,聊下解決復雜場景下的單點登錄方案。隨著雲計算的飛速發展,越

Chrome 中的這個彩蛋很多知道

當 Chrome 無法連線到網際網路時, 或者上著網突然掉線,重新整理頁面時報錯, 此時錯誤提示上方都會有一隻小短手霸王龍。嗯,表面上看起來也沒什麼特別之處,因為小短手在早期 Chrome 中有了。但一按空格鍵(或方向鍵 ↑ ),你就打開了一扇神奇之門! 往下看

C語言這個基礎知識99%的

printf()和scanf()是 C語言中最“多才多藝”的 I、O函式 它使用的轉換說明和轉義字元 能使程式設計師恰到好處的控制 想要輸入和輸出的資訊 但這也提高了使用它的難度 今天大雄就給大家整理了 這兩個函式的常見用法。 再插播一條廣告 C語言C

馬雲語錄:今天很殘酷明天更殘酷後天很美好但大多數死在明天晚上到後天的太陽

1、今天很殘酷,明天更殘酷,後天會很美好,但絕大多數人都死在明天晚上,卻見不到後天的太陽,所以我們幹什麼都要堅持!     2、創業艱難用左手溫暖你的右手,放棄是最大的失敗!(*當你成功的時候,你說的所有話都是真理。      *好的東西往往都是很難描述的。    

一半出氣泡排序你的同齡人躺下

今天這篇不是正經的吹水文,屬於有感而發吧。 前段時間在知乎上回答了一個問題“計算機學院的學生該怎樣提高自己的程式設計能力?”,下面的回答五花八門,有些人分享各種各樣的資料,什麼學Java的,學作業系統的,等等。還有些人說要學好演算法、資料結構刷LeetCode的,還有些人講怎麼做網站的,就是沒有一個人說一句好