我目前正在使用PHP學習JWT實現,並希望爲我的RESTful應用程序使用JWT令牌而不是會話。在智威湯遜有效負載中存儲敏感數據安全嗎?
在簽名製作的,我在這裏,我們只是使用Base64有效載荷做這樣
token = base64Header + '.' + base64Payload + '.' + signature
東西。如果我粘貼https://jwt.io/#debugger這樣的站點,Payload將被解密(即使簽名是錯誤的)。
我的問題,
- 僅用於發送數據時驗證與服務器簽名JWT?
- 是否不安全以保持敏感數據在有效載荷中?
- 如果不安全,有什麼辦法來保證有效負載?
下面是示例代碼我寫
<?php
$headers = base64_encode(json_encode([
"typ" => "JWT",
"alg" => "HS256"
]));
$claims = base64_encode(json_encode([
"sub" => "1234567890",
"name" => "John Doe",
"admin" => true,
"jti" => "870a3de5-ea7b-4062-abef-11180e530f5a",
"iat" => 1492603378,
"exp" => 1492606978
]));
$payload = $headers.".".$claims;
$signature = base64_encode(hash_hmac("sha256", $payload, 'secret', true));
$encodedJWT = $payload.".".$signature;
// eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImp0aSI6Ijg3MGEzZGU1LWVhN2ItNDA2Mi1hYmVmLTExMTgwZTUzMGY1YSIsImlhdCI6MTQ5MjYwMzM3OCwiZXhwIjoxNDkyNjA2OTc4fQ.nvw-bAUgr7H_xr3q8_Yz8rCNtMohtn2YlCmcLoLBWlc
請在downvoting之前提供意見。如果有什麼不對,我會更新我的問題:) –
嗨,根據我參加JWT會議的信息,敏感數據應該保留在數據庫中,令牌本身應該只包含快速識別所需的信息,而不是授權。 – Auris
我們應該在upvoting之前提供意見嗎? - :)原因downvote評論是罕見的是becasuse所以主持人建議不要偶爾報復downvoting。 – zaph