OAuth是一個授權框架,讓網站能夠請求對另一個網站使用者的有線訪問。然後使用者無需暴露他們的登入憑據給請求的網站,所以使用者可以自己決定他們想共享的資料。
像是 HackMD 可以利用 Google 帳號登錄這樣。
我們來用 Google 作為例子:
網站如果要在使用者關閉頁面後維持對話,他就需要將使用者資料儲存在某個地方。為了解決這個問題,Client端通常會在 POST
請求中將資料傳給Server,然後給使用者一個 Cookie。如果 Server 沒有將資料進行比較,就有可能給駭客一個機會偷發假資料給 Server 冒充任何使用者。
OAuth中有很多元件強烈建議要用的,state
就是其中一個。
在理想的情況下,state
應該要有個不可預測的值作為 CSRF 令牌形式在網站(Client)與OAuth服務之間傳遞。如果授權中沒有傳送 state
的值,意味著在欺騙使用者的瀏覽器 OAuth
之前,駭客可以自己啟動 OAuth。