前端安全 - XSRF - XSS@王云飛

XSRF

原理

王云飛 - 面試題

用戶(hù)登錄,網(wǎng)站A核查身份是否正確,正確就下發(fā)cookie
cookie會(huì)保存在用戶(hù)的瀏覽器中,這就完車(chē)了一次身份認(rèn)證的過(guò)程
接下來(lái)呢,用戶(hù)又訪問(wèn)了一個(gè)網(wǎng)站B,網(wǎng)站B在給用戶(hù)返回頁(yè)面的時(shí)候,會(huì)攜帶一個(gè)引誘性的點(diǎn)擊,這個(gè)點(diǎn)擊往往是一個(gè)鏈接,這個(gè)鏈接一般就是網(wǎng)站A的API接口。當(dāng)用戶(hù)點(diǎn)擊了這個(gè)鏈接后,這個(gè)點(diǎn)擊就訪問(wèn)了A網(wǎng)站,當(dāng)我們?cè)L問(wèn)A網(wǎng)站的時(shí)候咱們都知道瀏覽器會(huì)自動(dòng)上傳cookie,這個(gè)時(shí)候網(wǎng)站A覺(jué)得這個(gè)cookie拿到了,對(duì)身份進(jìn)行了重新確認(rèn),身份沒(méi)有問(wèn)題就相當(dāng)于執(zhí)行了這個(gè)接口的動(dòng)作。

新浪微博就出現(xiàn)過(guò)這樣的CSRF攻擊,莫名的增加了很多粉絲,就是這個(gè)原因。

這里有個(gè)前提就是注冊(cè)用戶(hù)在被攻擊網(wǎng)站一定登錄過(guò),未登錄的話(huà)訪問(wèn)權(quán)限接口提要求它登錄的。

CRSF造成攻擊的兩個(gè)前提,第一:網(wǎng)站中某個(gè)接口存在漏洞;第二:用戶(hù)在這個(gè)網(wǎng)站一定登陸過(guò),這是實(shí)現(xiàn)CSRF攻擊的兩個(gè)基本前提。

攻擊

你登錄了一個(gè)購(gòu)物網(wǎng)站,正在瀏覽商品,然后下單支付比如支付API是http://xxx.com/pay?id=100但是沒(méi)有任何驗(yàn)證。此時(shí)你收到一封郵件,郵件中隱藏著<img src='http://xxx.com/pay?id=100'/>,咱們都知道img一加載就會(huì)立即執(zhí)行,你查看郵件的就已經(jīng)悄悄的支付了

防御

  • token驗(yàn)證:
    我們的驗(yàn)證方式是自動(dòng)cookie,沒(méi)有手動(dòng)的token,token是注冊(cè)成功以后,是服務(wù)器給我們返回的。在我們?cè)L問(wèn)一些權(quán)限接口的時(shí)候必須攜帶token,否則不能通過(guò)認(rèn)證。就比如我們剛剛講的圖,點(diǎn)擊引誘連接只會(huì)自動(dòng)攜帶cookie不會(huì)攜帶token,所以就能避免攻擊。
  • referer驗(yàn)證:指的就是頁(yè)面來(lái)源,服務(wù)器判斷這個(gè)頁(yè)面是不是我下面的頁(yè)面,如果是我就執(zhí)行你的動(dòng)作,如果不是就不執(zhí)行一律攔截。
  • 隱藏令牌: 和token比較像,我們可能會(huì)把令牌放在請(qǐng)求頭中,不會(huì)放在鏈接上,這兩個(gè)本質(zhì)上沒(méi)什么太大的區(qū)別。只是使用方式有一點(diǎn)差別

XSRF VS XSS

  • XSS是像你的頁(yè)面注入JS腳本執(zhí)行,在JS里面去做他想做的事情;無(wú)需做權(quán)限認(rèn)證;
  • XSRF是用你API本身的漏洞,幫你自動(dòng)執(zhí)行;需要登錄認(rèn)證;

大前端面試題 - 小四 - 王云飛 - 2019.08.11

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容