欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Django中防范CSRF跨站點(diǎn)請(qǐng)求偽造攻擊的方法-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

中寧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!

小編給大家分享一下Django中防范CSRF跨站點(diǎn)請(qǐng)求偽造攻擊的方法,相信大部分人都還不怎么了解,因此分享這邊文章給大家學(xué)習(xí),希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去學(xué)習(xí)方法吧!

CSRF跨站點(diǎn)請(qǐng)求偽造(Cross—Site Request Forgery)。

攻擊者盜用了你的身份,以你的名義發(fā)送惡意請(qǐng)求,對(duì)服務(wù)器來(lái)說(shuō)這個(gè)請(qǐng)求是完全合法的,但是卻完成了攻擊者所期望的一個(gè)操作,比如以你的名義發(fā)送郵件、發(fā)消息,盜取你的賬號(hào),添加系統(tǒng)管理員,甚至于購(gòu)買(mǎi)商品、虛擬貨幣轉(zhuǎn)賬等。

CSRF攻擊原理以及過(guò)程

用戶C打開(kāi)瀏覽器,訪問(wèn)受信任網(wǎng)站A,輸入用戶名和密碼請(qǐng)求登錄網(wǎng)站A;

2.在用戶信息通過(guò)驗(yàn)證后,網(wǎng)站A產(chǎn)生Cookie信息并返回給瀏覽器,此時(shí)用戶登錄網(wǎng)站A成功,可以正常發(fā)送請(qǐng)求到網(wǎng)站A;

用戶未退出網(wǎng)站A之前,在同一瀏覽器中,打開(kāi)一個(gè)TAB頁(yè)訪問(wèn)網(wǎng)站B;

網(wǎng)站B接收到用戶請(qǐng)求后,返回一些攻擊性代碼,并發(fā)出一個(gè)請(qǐng)求要求訪問(wèn)第三方站點(diǎn)A;

瀏覽器在接收到這些攻擊性代碼后,根據(jù)網(wǎng)站B的請(qǐng)求,在用戶不知情的情況下攜帶Cookie信息,向網(wǎng)站A發(fā)出請(qǐng)求。網(wǎng)站A并不知道該請(qǐng)求其實(shí)是由B發(fā)起的,所以會(huì)根據(jù)用戶C的Cookie信息以C的權(quán)限處理該請(qǐng)求,導(dǎo)致來(lái)自網(wǎng)站B的惡意代碼被執(zhí)行。

CSRF攻擊實(shí)例

受害者 Bob 在銀行有一筆存款,通過(guò)對(duì)銀行的網(wǎng)站發(fā)送請(qǐng)求 http://bank.example/withdraw?account=bob&amount=1000000&for=bob2可以使 Bob 把 1000000 的存款轉(zhuǎn)到 bob2 的賬號(hào)下。通常情況下,該請(qǐng)求發(fā)送到網(wǎng)站后,服務(wù)器會(huì)先驗(yàn)證該請(qǐng)求是否來(lái)自一個(gè)合法的 session,并且該 session 的用戶 Bob 已經(jīng)成功登陸。

黑客 Mallory 自己在該銀行也有賬戶,他知道上文中的 URL 可以把錢(qián)進(jìn)行轉(zhuǎn)帳操作。Mallory 可以自己發(fā)送一個(gè)請(qǐng)求給銀行:http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory。但是這個(gè)請(qǐng)求來(lái)自 Mallory 而非 Bob,他不能通過(guò)安全認(rèn)證,因此該請(qǐng)求不會(huì)起作用。

這時(shí),Mallory 想到使用 CSRF 的攻擊方式,他先自己做一個(gè)網(wǎng)站,在網(wǎng)站中放入如下代碼:src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory ”,并且通過(guò)廣告等誘使 Bob 來(lái)訪問(wèn)他的網(wǎng)站。當(dāng) Bob 訪問(wèn)該網(wǎng)站時(shí),上述 url 就會(huì)從 Bob 的瀏覽器發(fā)向銀行,而這個(gè)請(qǐng)求會(huì)附帶 Bob 瀏覽器中的 cookie 一起發(fā)向銀行服務(wù)器。大多數(shù)情況下,該請(qǐng)求會(huì)失敗,因?yàn)樗?Bob 的認(rèn)證信息。但是,如果 Bob 當(dāng)時(shí)恰巧剛訪問(wèn)他的銀行后不久,他的瀏覽器與銀行網(wǎng)站之間的 session 尚未過(guò)期,瀏覽器的 cookie 之中含有 Bob 的認(rèn)證信息。這時(shí),悲劇發(fā)生了,這個(gè) url 請(qǐng)求就會(huì)得到響應(yīng),錢(qián)將從 Bob 的賬號(hào)轉(zhuǎn)移到 Mallory 的賬號(hào),而 Bob 當(dāng)時(shí)毫不知情。等以后 Bob 發(fā)現(xiàn)賬戶錢(qián)少了,即使他去銀行查詢?nèi)罩?,他也只能發(fā)現(xiàn)確實(shí)有一個(gè)來(lái)自于他本人的合法請(qǐng)求轉(zhuǎn)移了資金,沒(méi)有任何被攻擊的痕跡。而 Mallory 則可以拿到錢(qián)后逍遙法外。

Django中如何防范CSRF

Django使用專門(mén)的中間件(CsrfMiddleware)來(lái)進(jìn)行CSRF防護(hù)。具體的原理如下:

1.它修改當(dāng)前處理的請(qǐng)求,向所有的 POST 表單增添一個(gè)隱藏的表單字段,使用名稱是 csrfmiddlewaretoken ,值為當(dāng)前會(huì)話 ID 加上一個(gè)密鑰的散列值。 如果未設(shè)置會(huì)話 ID ,該中間件將不會(huì)修改響應(yīng)結(jié)果,因此對(duì)于未使用會(huì)話的請(qǐng)求來(lái)說(shuō)性能損失是可以忽略的。

2.對(duì)于所有含會(huì)話 cookie 集合的傳入 POST 請(qǐng)求,它將檢查是否存在 csrfmiddlewaretoken 及其是否正確。 如果不是的話,用戶將會(huì)收到一個(gè) 403 HTTP 錯(cuò)誤。 403 錯(cuò)誤頁(yè)面的內(nèi)容是檢測(cè)到了跨域請(qǐng)求偽裝。 終止請(qǐng)求。

該步驟確保只有源自你的站點(diǎn)的表單才能將數(shù)據(jù) POST 回來(lái)。 

另外要說(shuō)明的是,未使用會(huì)話 cookie 的 POST 請(qǐng)求無(wú)法受到保護(hù),但它們也不 需要 受到保護(hù),因?yàn)閻阂饩W(wǎng)站可用任意方法來(lái)制造這種請(qǐng)求。為了避免轉(zhuǎn)換非 HTML 請(qǐng)求,中間件在編輯響應(yīng)結(jié)果之前對(duì)它的 Content-Type 頭標(biāo)進(jìn)行檢查。 只有標(biāo)記為 text/html 或 application/xml+xhtml 的頁(yè)面才會(huì)被修改。

Django防范CSRF的具體操作

1. 將'django.middleware.csrf.CsrfViewMiddleware'添加到Django的settings.py文件中的MIDDLEWARE_CLASSES列表中(默認(rèn)已經(jīng)添加)。 該中間件必須在 SessionMiddleware 之后執(zhí)行,因此在列表中 CsrfMiddleware 必須出現(xiàn)在SessionMiddleware 之前 (因?yàn)轫憫?yīng)中間件是自后向前執(zhí)行的)。 同時(shí),它也必須在響應(yīng)被壓縮或解壓之前對(duì)響應(yīng)結(jié)果進(jìn)行處理,因此CsrfMiddleware必須在GZipMiddleware之后執(zhí)行。

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

2. 在使用到POST方法提交FORM的頁(yè)面中,添加csrf_token標(biāo)簽,例如:

<form action="." method="post">{% csrf_token %}

3. 在相應(yīng)的view中,確保“django.core.context_processors.csrf” 上下文處理器被正確使用,有兩種方法實(shí)現(xiàn)這一點(diǎn),一是使用RequestContext,它內(nèi)部會(huì)自動(dòng)使用到“django.core.context_processors.csrf”。另一種方法是手動(dòng)使用這個(gè)處理器,示例代碼如下:

from django.core.context_processors import csrf
from django.shortcuts import render_to_response
def my_view(request):
    c = {}
    c.update(csrf(request))
    # ... view code here
return render_to_response("a_template.html", c)

以上是Django中防范CSRF跨站點(diǎn)請(qǐng)求偽造攻擊的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

當(dāng)前文章:Django中防范CSRF跨站點(diǎn)請(qǐng)求偽造攻擊的方法-創(chuàng)新互聯(lián)
文章路徑:http://aaarwkj.com/article26/ccjicg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站用戶體驗(yàn)、企業(yè)建站軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
国产免费播放一区二区三区| 亚洲国产熟女一区二区三| 色自拍偷拍另类欧洲美女| 欧美一级特黄免费大片| 亚洲国产第一av导航| 色噜噜色一区二区三区| 欧美日韩国产精品综合| 少妇人妻系列中文在线| 欧美一区日韩二区国产三区| 日韩一二三四区精品电影免费播放| 蜜桃av噜噜一区二区三| 日本黄色录像在线观看| 亚洲综合国产一区二区| 免费国产午夜福利在线| 亚洲av日韩专区在线观看| 99久久免费精品老色| 一区二区三区欧美日| 国产中文字幕有码视频| 一区二区三区日韩国产电影| 欧美性生活真实的视频| 91色综合久久久久婷婷| 亚洲乱码精品一区二区| 中文国产人精品久久蜜桃| 亚洲精品老司机福利在线 | 精品不卡一区二区三区| 欧美日韩午夜福利视频| 日本成人午夜在线观看| 亚洲熟女午夜毛片av毛片| 深夜av一区二区三区| 亚洲毛片一区二区在线| 日韩丰满少妇在线观看| 97全国免费观看视频| 十八禁在线观看国产一区| 亚洲国产日韩欧美一级| 久久精品国产亚洲av亚| 亚洲巨人精品福利导航| 精品一区二区日本高清| 欧美激情在线精品一区二区| 欧美日韩国产一下老妇| 国产大学生露脸在线视频| 日本 影院 一区 二区|