CSRF(跨站請求偽造)概述
Cross-site request forgery 簡稱為“CSRF”,在CSRF的攻擊場景中攻擊者會偽造一個請求(這個請求一般是一個鏈接),然后欺騙目標用戶進行點擊,用戶一旦點擊了這個請求,整個攻擊就完成了。所以CSRF攻擊也成為"one click"攻擊。 很多人搞不清楚CSRF的概念,甚至有時候會將其和XSS混淆,更有甚者會將其和越權問題混為一談,這都是對原理沒搞清楚導致的。
這里列舉一個場景解釋一下,希望能夠幫助你理解。
場景需求:
小黑想要修改大白在購物網站tianxiewww.xx.com上填寫的會員地址。
先看下大白是如何修改自己的密碼的:
登錄---修改會員信息,提交請求---修改成功。
所以小黑想要修改大白的信息,他需要擁有:1,登錄權限 2,修改個人信息的請求。
但是大白又不會把自己xxx網站的賬號密碼告訴小黑,那小黑怎么辦?
于是他自己跑到www.xx.com上注冊了一個自己的賬號,然后修改了一下自己的個人信息(比如:E-mail地址),他發現修改的請求是:
【http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change】
于是,他實施了這樣一個操作:把這個鏈接偽裝一下,在小白登錄xxx網站后,欺騙他進行點擊,小白點擊這個鏈接后,個人信息就被修改了,小黑就完成了攻擊目的。
為啥小黑的操作能夠實現呢。有如下幾個關鍵點:
1.www.xxx.com這個網站在用戶修改個人的信息時沒有過多的校驗,導致這個請求容易被偽造;
---因此,我們判斷一個網站是否存在CSRF漏洞,其實就是判斷其對關鍵信息(比如密碼等敏感信息)的操作(增刪改)是否容易被偽造。
2.小白點擊了小黑發給的鏈接,并且這個時候小白剛好登錄在購物網上;
---如果小白安全意識高,不點擊不明鏈接,則攻擊不會成功,又或者即使小白點擊了鏈接,但小白此時并沒有登錄購物網站,也不會成功。
---因此,要成功實施一次CSRF攻擊,需要“天時,地利,人和”的條件。
當然,如果小黑事先在xxx網的首頁如果發現了一個XSS漏洞,則小黑可能會這樣做: 欺騙小白訪問埋伏了XSS腳本(盜取cookie的腳本)的頁面,小白中招,小黑拿到小白的cookie,然后小黑順利登錄到小白的后臺,小黑自己修改小白的相關信息。
---所以跟上面比一下,就可以看出CSRF與XSS的區別:CSRF是借用戶的權限完成攻擊,攻擊者并沒有拿到用戶的權限,而XSS是直接盜取到了用戶的權限,然后實施破壞。
因此,網站如果要防止CSRF攻擊,則需要對敏感信息的操作實施對應的安全措施,防止這些操作出現被偽造的情況,從而導致CSRF。比如:
--對敏感信息的操作增加安全的token;
--對敏感信息的操作增加安全的驗證碼;
--對敏感信息的操作實施安全的邏輯流程,比如修改密碼時,需要先校驗舊密碼等。

如果你沒有讀太明白,不要猶豫,請再讀一遍啦

你可以通過“Cross-site request forgery”對應的測試欄目,來進一步的了解該漏洞。