如果有人伪造了 jwt token 的话,我该如何应对?

andyzu

我安装了 composer require tinywan/jwt 。
我在用 webman 生成接口,给小程序和 app 使用,用户的所有操作,都需要带上手机号,你确保身份唯一。
如果有人按照我设置的规则, 并且更改了手机号,生成了 jwt , 我还需要不需要在接口里去验证token里的手机号和用户传递过来的手机号是否一样?或者用户用正确的 token ,但是更改了传递过来的手机号,我是否需要验证?


public function venueOrderinfoVerification(Request $request, string $local_order_number){
        // 获取 TokenVerifyMiddleware 里已经解密好的用户数据
        $staffinfo = $request->data;
        $param = [
            'mobile' => $request->get('mobile'),
            'local_order_number' => $local_order_number,
        ];

        $validate = new VenueOrderinfoVerificationValidate();
        if (!$validate->check($param)) {
            return json($validate->getError());
        }

        // 去除传递过来参数的前后空格
        $param = array_map('trim', $param);
        // 这部分多余不????????
        if ($param['mobile'] != $staffinfo['mobile']){
            return json([
                // 'HTTP_FAIL_REQUEST' => [200112, '非法请求,请确认请求者身份。'],
                'code' => config('myconfig.statusCode.HTTP_FAIL_REQUEST')[0],
                'msg' => config('myconfig.statusCode.HTTP_FAIL_REQUEST')[1],
                'data' => [],
            ]);
        }

        // 业务逻辑...

        return json([
            // 'HTTP_OK' => [200100, '请求成功'],
            'code' => config('myconfig.statusCode.HTTP_OK')[0],
            'msg' => config('myconfig.statusCode.HTTP_OK')[1],
            'data' => [],
        ]);

    }
544 4 1
4个回答

meows

签名认证失败,都认为是无效访问令牌。

  • 暂无评论
蚂蚁搬家

token 传过来 不是应该还要在服务端自行验证吗?你可以将所有的电话号码提前放在内存;到时候在内存验证 就可以了

  • 暂无评论
Tinywan

这个决定是要走中间件令牌校验的。可以参考这里:https://github.com/Tinywan/webman-admin/blob/main/app/middleware/AuthorizationMiddleware.php

class AuthorizationMiddleware implements MiddlewareInterface
{
    /**
     * @param Request $request
     * @param callable $handler
     * @return Response
     * @throws ForbiddenHttpException|UnauthorizedHttpException
     */
    public function process(Request $request, callable $handler): Response
    {
        $request->uid = JwtToken::getCurrentId();
        if (0 === $request->uid) {
            throw new UnauthorizedHttpException();
        }
        // ....其他
        return $handler($request);
    }
}
  • Tinywan 2023-12-22

    签名认证失败,直接返回401状态码就行了

kspade

难道你不验证令牌的?

  • 暂无评论
🔝