成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

20170813-CSRF 跨站請求偽造

missonce / 836人閱讀

摘要:是的縮寫,翻譯過來就是跨站請求偽造。要抵御,關(guān)鍵在于在請求中放入黑客無法偽造的信息。通過這個類,可以一次性給所有該類請求加上這個頭屬性,并把值放入其中。參考對跨站請求偽造的理解淺談攻擊方式跨站腳本攻擊與跨站請求偽造攻擊的學(xué)習(xí)總結(jié)。

CSRF

CSRF是Cross Site Request Forgery的縮寫,翻譯過來就是跨站請求偽造。

跨站:顧名思義,就是從一個網(wǎng)站到另一個網(wǎng)站。

請求:即HTTP請求。

偽造:在這里可以理解為仿造、偽裝。

綜合起來的意思就是:從一個網(wǎng)站A中發(fā)起一個到網(wǎng)站B的請求,而這個請求是經(jīng)過了偽裝的,偽裝操作達(dá)到的目的就是讓請求看起來像是從網(wǎng)站B中發(fā)起的,也就是說,讓B網(wǎng)站所在的服務(wù)器端誤以為該請求是從自己網(wǎng)站發(fā)起的,而不是從A網(wǎng)站發(fā)起的。

CSRF 攻擊是黑客借助受害者的 cookie 騙取服務(wù)器的信任,但是黑客并不能拿到 cookie,也看不到 cookie 的內(nèi)容。另外,對于服務(wù)器返回的結(jié)果,由于瀏覽器同源策略的限制,黑客也無法進(jìn)行解析。因此,黑客無法從返回的結(jié)果中得到任何東西,他所能做的就是給服務(wù)器發(fā)送請求,以執(zhí)行請求中所描述的命令,在服務(wù)器端直接改變數(shù)據(jù)的值,而非竊取服務(wù)器中的數(shù)據(jù)。所以,我們要保護(hù)的對象是那些可以直接產(chǎn)生數(shù)據(jù)改變的服務(wù),而對于讀取數(shù)據(jù)的服務(wù),則不需要進(jìn)行 CSRF 的保護(hù)。

原理

圖片來源: CSRF攻擊原理以及nodejs的實現(xiàn)和防御

 從上圖可以看出,要偽裝成從A網(wǎng)站發(fā)起請求,必須依次完成兩個步驟:

  1.登錄受信任網(wǎng)站A,并在本地生成Cookie。

  2.在不登出A的情況下,訪問危險網(wǎng)站B。
  

之所以要偽裝成從A網(wǎng)站發(fā)起,是因為Cookie是不能跨域發(fā)送的。結(jié)合上面這個例子來說就是:如果從A網(wǎng)站直接發(fā)送請求到B網(wǎng)站服務(wù)器的話,是無法將A網(wǎng)站中產(chǎn)生的Cookie一起發(fā)給B服務(wù)器的。

為什么要發(fā)送Cookie呢?這是因為服務(wù)器在用戶登錄后會將用戶的一些信息放到Cookie中返回給客戶端,然后客戶端在請求一些需要認(rèn)證的資源的時候會把Cookie一起發(fā)給服務(wù)器,服務(wù)器通過讀取Cookie中的信息來進(jìn)行用戶認(rèn)證,認(rèn)證通過后才會做出正確的響應(yīng)。

B網(wǎng)站訪問A網(wǎng)站服務(wù)器的一些需要認(rèn)證的資源的時候,如果沒有Cookie信息,服務(wù)器是拒絕訪問的,那么B網(wǎng)站就無法進(jìn)行惡意操作。而偽造成AB網(wǎng)站的請求,就可以將A網(wǎng)站的Cookie一起發(fā)到A服務(wù)器,這個時候就服務(wù)器就認(rèn)為該請求是合法的,就會給出正確的響應(yīng),這個時候,B網(wǎng)站就達(dá)到目的了。

危害

攻擊者盜用了你的身份,以你的名義發(fā)送惡意請求。CSRF能夠做的事情包括:以你名義發(fā)送郵件,發(fā)消息,盜取你的賬號,甚至于購買商品,虛擬貨幣轉(zhuǎn)賬......造成的問題包括:個人隱私泄露以及財產(chǎn)安全。

如何防止CSRF攻擊

CSRF攻擊之所以能夠成功,是因為黑客可以完全偽造用戶請求,該請求中所有的用戶驗證信息都是存在于cookie中,因此黑客可以在不知道這些驗證信息的情況下直接利用用戶的cookie來通過安全驗證。要抵御CSRF,關(guān)鍵在于在請求中放入黑客無法偽造的信息。

對于關(guān)鍵操作使用post方法:

現(xiàn)在的瀏覽器出于安全考慮,默認(rèn)都做了一定的限制,form標(biāo)簽發(fā)送到其他網(wǎng)站的請求會被攔截

使用驗證碼:

強制用戶必須與應(yīng)用進(jìn)行交互,才能完成最終的請求。例如:用戶的每次提交表單行為都需要填寫一個驗證碼

在請求地址中添加token并驗證 Anti CSRF Token

服務(wù)端在收到路由請求時,生成一個隨機(jī)數(shù),在渲染請求頁面時把隨機(jī)數(shù)埋入頁面(一般埋入 form 表單內(nèi),

服務(wù)端設(shè)置setCookie,把該隨機(jī)數(shù)作為cookie或者session種入用戶瀏覽器

當(dāng)用戶發(fā)送 GET 或者 POST 請求時帶上_csrf_token參數(shù)(對于 Form 表單直接提交即可,因為會自動把當(dāng)前表單內(nèi)所有的 input 提交給后臺,包括_csrf_token)

后臺在接受到請求后解析請求的cookie獲取_csrf_token的值,然后和用戶請求提交的_csrf_token做個比較,如果相等表示請求是合法的。

注意:

Token 最好保存在 Session 中。假如 Token 保存在 Cookie 中,用戶瀏覽器開了很多頁面(同一頁面打開了多次)。在一些頁面 Token 被使用消耗掉后新的Token 會被重新種入,但那些老的 Tab 頁面對應(yīng)的 HTML 里還是老 Token。這會讓用戶覺得為啥幾分鐘前打開的頁面不能正常提交

盡量少用 GET。假如攻擊者在我們的網(wǎng)站上傳了一張圖片,用戶在加載圖片的時候?qū)嶋H上是向攻擊者的服務(wù)器發(fā)送了請求,這個請求會帶有referer表示當(dāng)前圖片所在的頁面的 url。 而如果使用 GET 方式接口的話這個 URL 就形如:
https://xxxx.com/gift?giftId=...

,那相當(dāng)于攻擊者就獲取了_csrf_token,短時間內(nèi)可以使用這個 token 來操作其他 GET 接口。

由于用戶的Cookie很容易由于網(wǎng)站的XSS漏洞而被盜取,所以這個方案必須要在沒有XSS的情況下才安全。

檢測Referer:

Referer,根據(jù) HTTP 協(xié)議,在 HTTP 頭中有一個字段叫 Referer,它記錄了該HTTP請求的來源地址。服務(wù)器通過檢查Referer的值,如果判斷
出Referer并非本站頁面,而是一個外部站點的頁面,那么我們就可以判斷出這個請求是非法的

這個方法是實現(xiàn)防止圖片盜鏈的原理

優(yōu)點:這種方法的顯而易見的好處就是簡單易行,網(wǎng)站的普通開發(fā)人員不需要操心 CSRF 的漏洞,只需要在最后給所有安全敏感的請求統(tǒng)一增加一個攔截器來檢查 Referer 的值就可以。特別是對于當(dāng)前現(xiàn)有的系統(tǒng),不需要改變當(dāng)前系統(tǒng)的任何已有代碼和邏輯,沒有風(fēng)險,非常便捷。

缺點:Referer 的值是由瀏覽器提供的,雖然 HTTP 協(xié)議上有明確的要求,但是每個瀏覽器對于 Referer 的具體實現(xiàn)可能有差別,并不能保證瀏覽器自身沒有安全漏洞。使用驗證 Referer 值的方法,就是把安全性都依賴于第三方(即瀏覽器)來保障,從理論上來講,這樣并不安全。對于某些低版本瀏覽器,目前已經(jīng)有一些方法可以篡改 Referer 值

在HTTP頭中自定義屬性

這種方法也是使用token并進(jìn)行驗證,和上一種方法不同的是,這里并不是把 token 以參數(shù)的形式置于 HTTP 請求之中,而是把它放到 HTTP 頭中自定義的屬性里。通過 XMLHttpRequest 這個類,可以一次性給所有該類請求加上 csrftoken 這個 HTTP 頭屬性,并把 token 值放入其中。

參考:

對CSRF(跨站請求偽造)的理解

淺談CSRF攻擊方式

XSS跨站腳本攻擊與CSRF跨站請求偽造攻擊的學(xué)習(xí)總結(jié)。

CSRF攻擊原理以及nodejs的實現(xiàn)和防御

CSRF 攻擊的應(yīng)對之道

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/54416.html

相關(guān)文章

  • 程序猿必讀-防范CSRF跨站請求偽造

    摘要:,中文為跨站請求偽造是一種利用網(wǎng)站可信用戶的權(quán)限去執(zhí)行未授權(quán)的命令的一種惡意攻擊。防范技術(shù)令牌同步模式,簡稱是在用戶請求的頁面中的所有表單中嵌入一個,在服務(wù)端驗證這個的技術(shù)。 showImg(https://segmentfault.com/img/remote/1460000008505619); CSRF(Cross-site request forgery,中文為跨站請求偽造)是...

    wangtdgoodluck 評論0 收藏0
  • 程序猿必讀-防范CSRF跨站請求偽造

    摘要:,中文為跨站請求偽造是一種利用網(wǎng)站可信用戶的權(quán)限去執(zhí)行未授權(quán)的命令的一種惡意攻擊。防范技術(shù)令牌同步模式,簡稱是在用戶請求的頁面中的所有表單中嵌入一個,在服務(wù)端驗證這個的技術(shù)。 showImg(https://segmentfault.com/img/remote/1460000008505619); CSRF(Cross-site request forgery,中文為跨站請求偽造)是...

    baishancloud 評論0 收藏0
  • XSS 和 CSRF 兩種跨站攻擊

    摘要:請求偽造在跨站攻擊中,攻擊者需要獲得受害者的會話令牌,請求偽造也與會話劫持相關(guān),但是攻擊者不需要知道受害者的會話令牌,就能夠行駛受害者的權(quán)利。 差不多剛開始接觸前端的時候,經(jīng)常能看到一些早幾年入行大牛們的簡歷,幾乎所有人都會在簡歷中帶上這么一句話:具備基本的 Web 安全知識(XSS / CSRF)。顯然這已經(jīng)成為前端人員的必備知識。 showImg(https://segmentfa...

    GHOST_349178 評論0 收藏0
  • 用大白話談?wù)刋SS與CSRF

    摘要:它允許惡意用戶將代碼注入到網(wǎng)頁上,其他用戶在觀看網(wǎng)頁時就會受到影響。這類攻擊通常包含了以及用戶端腳本語言。更偏向于方法論,更偏向于一種形式,只要是偽造用戶發(fā)起的請求,都可成為攻擊。 這兩個關(guān)鍵詞也是老生常談了,但是還總是容易讓人忘記與搞混~。XSS與CSRF這兩個關(guān)鍵詞時常被拉出來一起比較(尤其是面試),我在這里也在寫一篇掃盲文,也幫自己整理一下知識脈絡(luò)。 這篇文章會用盡量人話的語言解...

    Yumenokanata 評論0 收藏0
  • 用大白話談?wù)刋SS與CSRF

    摘要:它允許惡意用戶將代碼注入到網(wǎng)頁上,其他用戶在觀看網(wǎng)頁時就會受到影響。這類攻擊通常包含了以及用戶端腳本語言。更偏向于方法論,更偏向于一種形式,只要是偽造用戶發(fā)起的請求,都可成為攻擊。 這兩個關(guān)鍵詞也是老生常談了,但是還總是容易讓人忘記與搞混~。XSS與CSRF這兩個關(guān)鍵詞時常被拉出來一起比較(尤其是面試),我在這里也在寫一篇掃盲文,也幫自己整理一下知識脈絡(luò)。 這篇文章會用盡量人話的語言解...

    wawor4827 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<