TOKEN驗證防止CSRF攻擊的原理。CSRF中文名是跨站請求僞造攻擊,黑客能夠經過CSRF攻擊來僞造咱們的身份,從而進行不法的活動。好比說是以咱們的身份進行轉帳,發送郵件等操做。後端
要想作到預防CSRF攻擊,首先須要瞭解CSRF攻擊的原理,只有這樣才能夠真正的掌握預防的手段。CSRF攻擊的原理是這樣的:瀏覽器
(1):當咱們登錄某個網站之後,由於HTTP協議是無狀態的,因此爲了保存咱們的登錄狀態,服務器中的程序就必須建立一個session文件,用來保存咱們的登錄信息。服務器
(2):爲了可以在多個頁面相互切換訪問之間,記錄咱們的狀態,服務端首先會將一個響應的session文件對應的session_id傳遞給客戶端瀏覽器。瀏覽器接受到之後就會將這個值寫入到一個cookie文件中。在下一次訪問該網站的內容的時候,就會將客戶端本地所存儲的屬於該網站的cookie所有發送給服務端程序,其中就包括存儲session_id的cookie。服務端若是須要檢測請求者的身份,就能夠根據傳遞過來的cookie中所包含的session_id來檢測服務端是否存在響應的session文件以及session文件中的內容是否合法。若是檢測合法,那麼就驗證用戶身份合法,不然不合法。cookie
(3):若是黑客在其餘頁面設置了一個連接,這個連接指向一個網站的轉帳系統。而且當前用戶是這個網站的會員,而且處於登錄的狀態(也就是客戶端瀏覽器存在存儲合法的session_id的cookie),那麼當用戶點擊了這個連接之後,那麼客戶端瀏覽器就會將用戶的這些信息進行傳遞到服務端,可是這個連接具體作了什麼,用戶根本不知道,這也就作到了僞造了用戶的身份,作了用戶都不知道的事情。。。session
那麼應該怎麼進行預防這種攻擊那?目前主流的框架爲了預防這種攻擊,都是採用TOKEN機制。也就是說當用戶與服務端進行交互的時候,傳遞一個加密字符串到服務端,服務端來檢測這個字符串是不是合法的,若是不合法就有多是黑客僞造用戶信息進行請求的。框架
那麼這個加密字符串是怎麼生成的那?加密字符串是由後端程序生成,而後賦值到頁面之上。通常是由當前控制器,方法,密鑰,時間組合在一塊兒加密而成。傳遞到服務端之後,服務端從新生成一遍,若是一致就是合法的,不然就是不合法的。網站