我目前正在使用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