Sajad Kardel
Sajad Kardel
خواندن ۲ دقیقه·۴ سال پیش

سوال : Security Stamp چیست؟؟

در روند احراز هویت کاربران وقتی برای کاربری cookie یا token ست میکنیم عملا احراز هویت برای هر request بعدی توسط اطلاعات ذخیره شده درون cookie یا token کاربر انجام میشود.

این اطلاعات شامل هویت و دسترسی های هر کاربر هربار به سرور ارسال شده و در صورت Authorize شدن اجازه دسترسی از سمت سرور ارسال خواهد شد‌.

میدانیم که هر کوکی یا توکن یک تاریخ انقضا یا اصطلاحا expiration date دارد که تا زمان سر رسید آن ، کوکی یا توکن مورد نظر معتبر خواهد بود.

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

همینطور که پیداست این یک اشکال بزرگ بشمار میرود و اینجا پای Security Stamp یا همان مهر امنیتی به میان میاید.


استفاده از آن به این شکل است که همراه ذخیره اطلاعات کاربر در دیتابیس یک مهر امنیتی(معمولا از جنس Guid) ذخیره میکنیم که کوکی یا توکنی که میسازیم نیز حاوی آن خواهد بود.

حالا تنها کاری که باید انجام دهیم این است که هربار اطلاعاتی از کاربر ویرایش شد این مهر امنیتی در دیتابیس تغییر کند. با اینکار در هر request کاربر میتوانیم مهر امنیتی درون کوکی یا توکن را با چیزی که در دیتابیس موجود است مقایسه کنیم. بدیهی است اگر یکسان بود یعنی کاربر ویرایش نشده و اطلاعاتش آخرین آپدیت از خودش را دارد و اما اگر مهر امنیتی آن متفاوت با مهرامنیتی درون دیتابیس بود یعنی کاربر ویرایش شده و ما باید کاربر را logout و به صفحه login هدایت کنیم تا دوباره کوکی یا توکن جدید با آخرین ورژن از اطلاعاتش را دریافت کند.

احراز هویتauthenticationAuthorization
برنامه نویس
شاید از این پست‌ها خوشتان بیاید