2016-07-19 38 views
3

好吧,我開發一個角2應用程序。我已經添加了auth0認證,但對我來說,它會非常不安全地處理會話。 jwt令牌未加密並保存在localStorage內。這些索賠對任何人都是可見的,他們可以很容易地解碼和揭示。更何況,Web存儲本身並不是一個安全的地方。爲什麼我可以輕鬆解碼jwt.io上的auth0 id_token?

我選擇了JWTs因爲後來我想要改造這個Web應用程序與電子桌面應用程序,所以我不能使用cookie的會話。我的用戶將有更多的信息,比如角色,我不想查找在DB在每次請求,這就是爲什麼我想將它們存儲在智威湯遜。加密數據是有道理的,但auth0似乎不提供該功能。

如果像角色要求存儲在localStorage的保護,是什麼阻止我去Firefox的控制檯,更改令牌,例如讓自己成爲管理員?

回答

4

如果像角色要求存儲在localStorage的保護,是什麼阻止我去Firefox的控制檯,更改令牌,例如讓自己成爲管理員?

由於JWT簽訂所以任何改動內容或簽名將驗證

數字簽名過程中被檢測到,利用創建的JWT令牌這樣hhhhhh.ppppppp.ssssss第三部分服務器私鑰,是可以驗證令牌的發佈者的身份,還在於它沒有被改變

如果你想隱藏的有效載荷的方式,JWT規範允許使用加密(請參見JSON網絡加密-JWE在RFC)。如果auth0不支持它,你有很多jwt.io

+1

感謝澄清,似乎我完全不明白jwts。 –

+1

沒問題,你的問題有道理 – pedrofb

+0

現在等一下。攻擊者改變jwt內容的唯一方法就是現在祕密密鑰。但是如果他有權使用這個標記,他會喜歡蠻橫嗎?獲得一臺超級計算機,在一秒鐘內生成40k祕密並破解它? –

0

JWT令牌有兩個部分:明確(由BASE64算法codet) - 與例如像EXP時間或用戶ID和角色等,並隱含有效載荷數據 - 它具有極高的概率任何保證哈希鍵顯式數據的一部分在創建標記後(服務器使用它的私鑰)不會改變。所以在本地/會話存儲中,您可以存儲這個明確的部分。完整的令牌應該存儲在httpOnly cookie中 - 然後您將受到保護,免受XSS攻擊(黑客想竊取您的令牌)。

所以,你可以閱讀和從Firefox改變JWT令牌有效載荷,但你將無法生成隱哈希 - 和服務器將拒絕您的令牌。

所以答案標題問題是:因爲Auth0 id_token is JWT令牌:)

+0

感謝您的解決方案中列出的庫。但是,我打算創建一個具有相同功能的桌面應用程序(使用電子),因此,Cookie不適用於此,因爲電子沒有它。 –

+0

好的,但是你還必須在電子應用程序中處理XSS攻擊問題嗎? –

+0

好的,是的。我認爲,我可能錯了,防止xss攻擊比防止xsrf攻擊更容易。在用戶輸入和令牌中轉義內容要比在您的網站上實施xsrf令牌容易得多。 –

相關問題