csrf攻擊
知識點:http請求是無狀態的,也就是說每次http請求都是獨立的無關之前的操作的,但是每次http請求都會將本域下的所有cookie作為http請求頭的一部分發給服務器,所以服務器就根據請求中的cookie存放的sessionid去session對象中找到用戶記錄。
理解了以上,csrf攻擊就是惡意的復制用戶的信息,並做一系列危害用戶利益的操作,這就是csrf的機制。
csrf攻擊的主要目的是讓用戶在不知情的情況下攻擊自己衣登錄的一個系統,類似於釣魚。如用戶當前已經登錄了郵箱,或bbs,同時用戶又在使用另外一個,已經被控制的站點,我們叫他釣魚網站。比如這個網站的美女圖片特別吸引你,然後你手賤的點了一下,此時就可以觸發一個js的點擊事件,構造一個bbs發帖的請求,去往你的bbs發帖。由於當前你的瀏覽器狀態已經是登錄狀態,所以session登錄cookie信息都會跟正常的請求一樣,純天然的利用當前的登錄狀態,讓用戶不知情的情況下,幫你發帖或者幹別的事情更嚴重的是如果有關錢相關,可以購買或者退款之類的操作。是不是很慘!
防禦!
1、通過referer、token或者驗證碼來檢測用戶提交
2、盡量不要在頁面的鏈接中暴露用戶隱私信息
3、對於用戶修改刪除等操作最好使用post操作
4、避免全站通用的cookie,嚴格設置cookie的域
簡單的說:
1、http頭中有一個叫referer的字段,它記錄了該http請求的來源地址,在通常情況下,訪問一個安全受限頁面的請求來自同一個網站,比如需要訪問一個a域名下面的某個鏈接的,用戶必須先登錄a域名,然後通過點擊頁面中的按鈕進行轉賬事件,這時,該轉賬請求的refer值就會是轉賬按鈕所在的頁面的url,通常以a域名開頭的地址,而如果黑客要對網站實施csrf攻擊,他只能在他的網站構造請求,當用戶通過黑客的網站發送請求到a域名喜愛,該請求的referer是指向黑客自己的網站,因此要防禦csrf攻擊,a網站只需要對每一個轉賬驗證其referer值,如果是a開頭的域名則說明是自己的請求,是合法的,否則拒絕該請求。
2、另一種方法就是在請求中放入黑客不能偽造的信息,並且不存在與session中,可以是http請求中以參數的形式加入一個隨機產生的token,並且在服務器端簡歷一個攔截器來驗證這個token,如果請求中沒有token或者token值不正確,則認為可能是csrf攻擊而拒絕該請求
差不多就這些來我了解的,都下班去歡度周末來,真的,好好看書吧,總是要還的。
csrf攻擊