8 months ago

What is Token ?

Token就是一種身分證的樣子,當使用者登入以後,我們可以使用uid、time、sign等資訊,進行一連串的加密動作,來得到該使用者的Token,並且返回給客戶端,後面客戶端將會用該Token進行一連串的操作,如Rest API。

無狀態性(Stateless)

Token本身是無狀態性的,所以當有客戶端傳送一個Token進來,這時後伺服器將會進行驗證動作,確認是不是過期了,Token是否被惡意串改過了。

安全性提高

現在我們需要客戶端主動給我們Token,可以避免跨網域請求偽造攻擊(CSRF),雖然Token安全性比Session更高,但是如果你今天讓別人發現你的Token後,那麼你的身分將有可能被盜用。

除了上述的部分外,通常Token組合是使用者資料、日期以及自己的私鑰進行HASH動作,因此要破解,要嘛就是我們的私鑰流出去,不然就是人家很有心的使用暴力破解法,這樣來取得個資,但是,通常我們不會把私密訊息放入Token的組合,儘管他破解了,我們也還能夠進行網域、IP的驗證。

使用情境

通常Token可以使用在不同系統間的資源交換,這種無狀態的身分證會比Session更加的安全,使用最多的都是Mobile App,由於Mobile並沒有Cookie,這時候我們就會選擇使用Token進行。

Token都會有期限的,那麼設計上也都是這樣,因此我們如果使用者閒置過久,大部分會需要你重新登入,但這樣又影響使用者體驗,因此當用戶的請求來的時候,我們可以先確認該Token是不是由我們所發出去的,並且將該Token的時間期限延長。

← [JQuery] SlickGrid套件在Bootstrap3所遇到的問題 [Spring MVC] CH 3. Spring + Hibernate + JPA →
 
comments powered by Disqus