به Security.SE خوش آمدید. بیایید یک قدم عقب برداریم و ابتدا موضوعات سطح بالاتر را پوشش دهیم که امیدوارم آنچه را که شما به دنبال آن هستید توضیح دهید. پاسخ کوتاه این است: نشانه های طولانی مدت خطرناک هستند.

Session Management

جلسه استاندارد ، تهیه کوکی با توکنی که سپس در بانک اطلاعاتی یا سرور ذخیره کننده مانند Redis ذخیره می شود ، راهی است که می توان آنها را نگه داشت. یک کاربر وارد سیستم شده است ، تا همین اواخر. این کوکی در حالت ایده آل معنای دیگری جز نشان دادن اطلاعات ذخیره شده در پایگاه داده ، فایل های سیستم یا Redis ندارد.

این ویژگی به برنامه ها اجازه می داد جلسات را لغو کنند (مثلاً "از همه دستگاههای من خارج شوید") در صورت لزوم. این ویژگیها ویژگیهای دیگری مانند شناسایی دستگاههای منحصر به فرد را نیز به شما می دهد ، اما به آن لغو تغییر می یابد.

JWT

من تا همین اواخر در بالا گفتم ، زیرا با ظهور JWT ، JSON Web Tokens ، JWT معمولاً به عنوان بی تابعیت عمل می کند. نشانه سرور هیچ شناختی از آن نشانه غیر از آنچه توکن خود توصیف می کند ندارد. به این ادعا نیز گفته می شود. البته برای جلوگیری از ادعای چیزهایی مانند امضای نشانه ، موارد تخفیفی وجود دارد. با فرض اینکه اینجا انجام می شود ، زیرا بیشتر فریم ورک ها به صورت پیش فرض در حال حاضر ، مسئله کمتر از کاری است که می توانید با آن نشانه انجام دهید.

بنابراین ، اکنون چه؟

به نفع شفافیت: من نمی توانم JWT بایستم. مملو از موضوعاتی است که احتمالاً فراتر از حد این سؤال است ، و من قصد ندارم که از این موضوع دوری کنم. من در جواب خود سعی کردم از تعصب خودداری کنم ، اما در صورت هرکسی که این مطلب را بخواند تعصب می بیند ، به همین دلیل است. : P

برای پاسخ به سؤال در حال حاضر با برخی از این زمینه: اگر نشانه ای از دستگاه (مرورگر ، برنامه تلفن همراه و غیره) دزدیده شود ، هیچ روش عادی برای ابطال آن نشانه JWT وجود ندارد. از آنجا که شما آن را به عنوان یک نشانه برای همیشه حفظ کرده اید ، حتی انقضای آن نشانه نمی تواند مخاطبان ناخواسته از دسترسی به اطلاعات حساب جلوگیری کند. هیچ جزء سرور ، جز لیست سیاه آن لیست ، که می تواند از کاربر و داده های ذخیره شده محافظت کند ، وجود ندارد.

به طور خلاصه: تنها دفاع واقعی JWT انقضاء آن است. هیچ توانایی ابطال وجود ندارد که من از آن برای محافظت از حساب اطلاع داشته باشم. در حالی که جلسات طولانی مدت به طور کلی یک ایده بد است ، اما اصطکاک کاربر را به حداقل می رساند. چه کسی می خواهد هر بار که به اینجا می آیند وارد سیستم شوید؟ سایت هایی مانند SE می توانند جلسات روی سرور را باطل کنند. به عنوان مثال این توانایی را در گوگل و فیس بوک مشاهده خواهید کرد.