在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  Linux  網(wǎng)絡安全  HTML/ 這種破解CSRF防御的方法是否可行?

這種破解CSRF防御的方法是否可行?

我們首先統(tǒng)一一下口徑:
站點A:被攻擊的網(wǎng)站
站點B:偽造請求的網(wǎng)站

一般網(wǎng)站的防御方法是:
判斷請求中的token和cookie中的token是否相同,相同則表示請求發(fā)起者和會話用戶是同一個人。

這種防御方法可行的原因是:
站點B無法獲取到站點A的cookie,所以無法在請求中添加token。

但,我們假設站點B知道站點A的某個頁面表單里有隱藏的token字段,那么,站點B在自己的頁面中寫一個隱藏的iframe去請求這個頁面。(這里有一個問題,iframe會創(chuàng)建新的會話嗎?但不管會不會,都有如下可能)

  1. iframe不會生成新的會話。那么對于用戶而言,假設用戶在訪問站點A后沒有關閉站點又去訪問了站點B,那么站點B中的iframe和站點A屬于同一個會話,也就是說他們的token相同。這個時候站點B通過預先寫好的腳本去獲取到iframe中的token,然后在偽造的請求中加入這個token,能否成功?
  2. iframe會生成新的會話。那也就是說站點B的iframe中的token和站點A的token值是不相同的,但是可以使用以下方法去偽造請求:站點B不是直接在頁面中添加偽造請求,而是在iframe里去添加偽造請求,由于iframe中是站點A的會話,所以請求會帶著站點A的cookie一起發(fā)出去,由于iframe和站點A共用一套cookie(因為同域),所以就成功盜用了用戶的身份。這種方法可行嗎?

---------- 補充 -----------

經(jīng)過驗證,iframe并不會產(chǎn)生新的會話,而是會沿用未關閉的站點A的會話。

也就是說,iframe中表單的token字段已經(jīng)可見,關鍵在于腳本是否能夠獲取到(跨域獲取iframe中的內(nèi)容)。

回答
編輯回答
陪我終

我想你對csrf是不是有一些誤會。。。

首先,iframe跨域嵌套基本是不可行的,這點你可以試試各大網(wǎng)站,你用iframe嵌套它們,并嘗試獲取iframe中的內(nèi)容,會被拒絕。

然后,csrf的攻擊無需獲取cookie(它的原理是攻擊網(wǎng)站B構建一個a網(wǎng)站的請求,冒充是a網(wǎng)站,然后就成功的讓瀏覽器帶上了cookie-所以,哪怕是http only也無法阻止,從而身份校驗成功-當然,這里你應該也能看到,最簡單的判斷referer字段就可以防御了,不過鑒于客戶端是不可信的,所以一般不建議僅僅只校驗referer)

再說下,目前的csrf防御的一種通用方案是:請求加token(注意,不是cookie作為token,而是主動在header請求里加一個token字段)

這樣,只要你無法獲取實際的token,就無法偽造,所以相對安全系數(shù)更高。

2018年2月1日 08:02
編輯回答
蔚藍色

昨天遇到一個奇葩 跟你的想法一樣。還說如果不適應iframe 樣式就沒了。。。

2017年7月28日 12:56
編輯回答
糖果果

問題在于,站點B可以讓它的站點不允許在iframe中使用,且跨域的話,站點A的腳本并不能操作iframe中的表單

2018年7月30日 16:09