سلام
تویه تعریف JWT گفته میشه که روش امنی برای انتقال اطلاعاته.
وقتی از JWT استفاده میکنیم از این که محتوای اون قابل تغییر نیست میتونیم مطمعن باشیم به خاطر اون امضاش ولی با توجه به اینکه میشه براحتی دیکودش کرد آیا روش امنی هست تا اطلاعات موردنیاز درمورد کاربر رو بزاریم توش و از کوئری زدن های بیش حد به پایگاه داده جلوگیری کنیم ؟!
من تصورم بر اینه که وقتی token ما بیوفته دست یکی دیگه :
۱. بسادگی میتونه payload رو decode کنه و اطلاعاتش رو استخراج کنه
۲. میتونه token مارو به همراه درخواست خودش به server بفرسته
یکی از معایب کوکی ها این بود که اطلاعات در سمت کاربر ذخیره میشد وقتی ما token رو میفرستیم سمت کاربر چه تضمینی وجود داره که این اطلاعات امن بمونن و توسط افراد غیرمجاز خونده نشن؟
با تمام احترامی که واسه استاد آوند عزیز قائلم ولی یه انتقاد هم دارم : احساس میکنم بعضی جاها سرعت به کیفیت ترجیح داده شده و به جای رسوندن مفهوم صرفا یه روخوانی خلاصه وار از روی صفحات وب داریم
سلام و احترام
اول اینکه شما باید برای توکنی که تولید میکنید باید یه تاریخ انقضا بزارید طبق کاری که میکنید تا امنیت به خطر نیوفته، دوم اینکه شما داخل signature امضای خودتون رو دارید و اگه دست کسی بیوفته تا اون کلید شما رو نداشته باشه به درد هیشکی نمیخوره و نمیشه decode کرد. پس اگه امضای شما فقط سمت سرور بمونه و به دست کس دیگه ای نرسه خیلی خیلی سخته که بشه اونو بازیابی کرد و اون داده هش به درد کسی نمیخوره
حالا اگه داده هش شده دست کاربر ادیت شد عملا داره اعتبارشو از بین میبره و اون توکن باز به درد نمیخوره، حالا اگه بگیم توکن دست یه هکر افتاد و خودشو جای کس دیگه قالب زد باید همون بحث تاریخ انقضا رو رعایت کنیم تا بعد از زمانی که تعیین میکنیم از بین بره
برای درک خیلی بهتر حتما مقاله https://developer.okta.com/blog/2018/06/20/what-happens-if-your-jwt-is-stolen بخونید