W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
另一個大問題是 CSRF 。這是一個非常復(fù)雜的話題,我不會在此詳細(xì)介紹,而只會 提及 CSRF 是什么和理論上如何避免它。
如果你的驗證信息存儲在 cookie 中,你有隱式的狀態(tài)管理。“已登入”狀態(tài)由一個 cookie 控制,并且這個 cookie 在每個頁面的請求中都會發(fā)送。不幸的是,在第三 方站點觸發(fā)的請求中也會發(fā)送這個 cookie 。如果你不注意這點,一些人可能會通過 社會工程學(xué)來誘導(dǎo)你應(yīng)用的用戶在他們不知道的情況下做一些蠢事。
比如你有一個指定的 URL ,當(dāng)你發(fā)送 POST 請求時會刪除一個用戶的資料(比如 http://example.com/user/delete 。如果一個攻擊者現(xiàn)在創(chuàng)造一個頁面來用 JavaScript 發(fā)送這個 post 請求,他們只是誘騙一些用戶加載那個頁面,而他們 的資料最終會被刪除。
想象你在運行 Facebook ,有數(shù)以百萬計的并發(fā)用戶,并且某人放出一些小貓圖片 的鏈接。當(dāng)用戶訪問那個頁面欣賞毛茸茸的貓的圖片時,他們的資料就被刪除。
你怎樣才能阻止這呢?基本上,對于每個修改服務(wù)器上內(nèi)容的請求,你應(yīng)該使用 一次性令牌,并存儲在 cookie 里, 并且 在發(fā)送表單數(shù)據(jù)的同時附上它。 在服務(wù)器再次接收數(shù)據(jù)之后,你要比較兩個令牌,并確保它們相等。
為什么 Flask 沒有為你這么做?理想情況下,這應(yīng)該是表單驗證框架做的事,而 Flask 中并不存在表單驗證。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: