跨站請求僞造和csrf

1. 釣魚網站的頁面和正經網站的頁面對瀏覽器來說有什麼區別? (頁面是怎麼來的?)
            釣魚網站的頁面是由 釣魚網站的服務端給你返回的    
            正經網站的網頁是由 正經網站的服務端給你返回的
            
        2。釣魚網站進行csrf的過程:
            用戶訪問了釣魚網站,並通過釣魚網站給正經網站的服務端發送了請求,(例如在轉賬請求,釣魚網站修改了轉入賬戶,然後發送給了正經網站的服務端)
            正經網站的服務端未能識別出這個一個虛假的請求,而是直接進行了處理,從而轉賬成功
            解決方案:在正經網站加入校驗字符(該字符釣魚網站獲取不了),使得正經網站的服務端能夠識別是否是正經網站傳來的請求

正經網站的請求頁面,端口號爲8000:

正經網站的服務端:

釣魚網站仿照了正經網站的頁面,並給正經網站的服務端發送了請求且篡改了轉入賬戶:

釣魚網站的頁面,端口號爲8888:

 

當釣魚網站給正經網站的服務端發出請求時,正經網站的服務端未能辨別出這是一個虛假的網站,從而對請求進行了處理

解決方案:在正經網站加入校驗字符(該字符釣魚網站獲取不了),使得正經網站的服務端能夠識別是否是正經網站傳來的請求
         Django中內置了一個專門處理csrf問題的中間件
            django.middleware.csrf.CsrfViewMiddleware(在setting中)
            
            這個中間件做的事情:
                1. 在render返回頁面的時候,在頁面中塞了一個隱藏的input標籤
                
                用法:
                    我們在頁面上 form表單 裏面 寫上 {% csrf_token %}
                    
                網頁中翻譯爲<input type="hidden" name="csrfmiddlewaretoken" value="8gthvLKulM7pqulNl2q3u46v1oEbKG7BSwg6qsHBv4zf0zj0UcbQmpbAdijqyhfE">
                
                2. 當你提交POST數據的時候,它幫你做校驗,如果校驗不通過就拒絕這次請求

settings配置中:

csrf在網頁中則翻譯爲一串字符串

此時釣魚網站在發出請求時,則被正經網站的服務端拒絕:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章