人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Web安全教程之CSRF(跨站點請求偽造)

發(fā)布日期:2021-12-21 17:33 | 文章來源:源碼中國

我們在前端面試過程中遇到的另一個最多的問題就是web安全了,這次我們來聊聊CSRF攻擊。CSRF是一種常見的攻擊,但是也是web安全中最容易被忽略的一種攻擊方式。下面話不多說了,來一起看看詳細的介紹吧。

什么是CSRF(跨站點請求偽造)

根據(jù)字面意思,大概能猜到,CSRF攻擊就是攻擊者偽造了用戶的請求,在用戶不知道的情況下,以用戶的名義向服務器發(fā)送惡意請求。常見的場景是,用戶首先登陸一個正常(下面稱為被攻擊網(wǎng)站)的網(wǎng)站,攻擊者誘使用戶在不關閉被攻擊網(wǎng)站的同時打開攻擊者的頁面,這時攻擊者就可以以用戶的名義給被攻擊網(wǎng)站發(fā)送惡意請求了??梢钥闯鯟SRF是有條件的,首先用戶要登陸被攻擊網(wǎng)站,并生成Cookie,然后在不登出被攻擊網(wǎng)站的同時,訪問攻擊網(wǎng)站。這兩個條件缺一不可。

CSRF進階

瀏覽器Cookie策略

CSRF之所以能成功,主要還是因為用戶的瀏覽器成功發(fā)送了Cookie的緣故。瀏覽器所持有的Cookie分為兩種:一種是“Session Cookie”,又叫“臨時Cookie”;另一種是“Third-party Cookie”,也稱為“本地Cookie”。

Third-party Cookie,服務器在Set-Cookie時指定了Expire時間,只有到了Expire時間后Cookie才會失效,而Session Cookie則沒有指定Expire時間,瀏覽器關閉后就失效了。如果瀏覽器從一個域的頁面中,要加載另一個域的資源,由于安全原因,某些瀏覽器會阻止Third-party Cookie的發(fā)送。由于新打開的頁面和原來的頁面在同一個瀏覽器進程中,所以Session Cookie將會被發(fā)送。

IE瀏覽器處于安全考慮是禁止瀏覽器在<img>、<iframe>、<script>、<link>等標簽中發(fā)送第三方Cookie的。當前的主流瀏覽器中,默認會攔截Third-party Cookie的有:IE6~8、Safari,不會攔截的有:Firefox、Opera、Chrome等。

只有GET請求么?

在CSRF攻擊流行之初,有一種錯誤的觀點認為CSRF攻擊只能由GET發(fā)起,這種錯誤觀點的形成原因是大多數(shù)CSRF攻擊發(fā)起時,使用的HTML標簽都是<img>、<iframe>、<script>等帶src屬性的標簽,這列標簽只能夠發(fā)起一次GET請求,而不能發(fā)起POST請求。然而,對于攻擊者來說,有若干種方法可以構造出一個POST請求。最簡單的方法就是在一個頁面中構造好一個form表單,然后使用javascript自動提交這個表單。

<form action="http://www.a.com/register" id="register" method="post" accept-charset="utf-8">
 <input type="text" name="username" value=""/>
 <input type="password" name="password" value=""/>
 <input type="submit" name="submit" value="submit"/>
</form>
<script>
 var f = document.getElementById("register");
 f.inputs[0].value = "test";
 f.inputs[1].value = "passwd";
 f.submit();
</script>

CSRF防御

驗證碼

驗證碼是對抗CSRF攻擊最簡單有效地防御方法。CSRF攻擊往往是在用戶不知情的情況下構造了網(wǎng)絡請求。而驗證碼則強制用戶必須與應用進行交互,才能完成最終請求。
但是驗證碼并不是萬能的,我們不可能給頁面的所有操作都加上驗證碼。

Referer Check

Referer Check在互聯(lián)網(wǎng)中最常見的應用就是“防止圖片盜鏈”。同理,Referer Check也可以被用于檢查請求是否來自合法的源。

Anti CSRF Token

CSRF攻擊存在的本質原因還是網(wǎng)頁中重要操作的所有參數(shù)都是可以被攻擊者猜測到的。攻擊者只有預測出url所有參數(shù)與參數(shù)值,才能成功地構造一個偽造的請求。所以我們可以通過把參數(shù)加密,或者使用一些隨機數(shù),從而讓攻擊者無法猜測到參數(shù)值。

我們可以給請求新增加一個token,這個token值是隨機的。

http://host/path/delete?username=abc&item=123&token=[random(seed)]

由于token的存在,攻擊者就無法再構造出一個完整的url來實施CSRF攻擊了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對本站的支持。

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部