2016-10-01 74 views
0

成功登錄後,我的節點應用程序返回JWT令牌。篡改有效的JWT令牌

JWT使用用戶ID,到期日期和密碼進行簽名。

這是我將如何產生與ID的用戶令牌:由於我的後臺應用程序標識從它的令牌用戶

return jwt.sign({ 
     _id: 1, 
     exp: exp_date), 
    }, "MY_SECRET"); 
    }; 

難道與用戶有可能「1 id:1「來編輯他的有效標記,將它設置爲」id:2「,然後開始在後端應用程序中混淆,就好像他是用戶使用」id:2「一樣?

回答

2

不除非有人得到了你的私人密鑰訪問你使用簽署JSON

1

祕密是用來簽署後驗證它的有效載荷。請查看JWT網站(https://jwt.io/),其中顯示了相當好的概念。

令牌載荷未加密,因此每個人都可以讀取並可能對其進行修改。通過最初對有效負載進行簽名,可以在驗證令牌時識別修改。因此,如果有人修改了用戶標識,則有效載荷的哈希總和將發生變化,並且沒有您的密鑰,則無法重新創建簽名。所以你可以保證令牌不會被無法識別地操縱。

除了使用必須在簽名實例和想要驗證令牌的實例之間共享的簡單祕密之外,還可以在使用私鑰和令牌有效性進行簽名的情況下使用公鑰密碼術可以由不允許創建簽名令牌本身的證書進行驗證。我建議這種分佈式設置的方法,因爲當一個非簽名服務受到攻擊時,沒有機會操縱令牌。