حفاظت در مقابل درخواست های دوگانه

Response Cache: Double Request Protection

(کش پاسخ: حفاظت در مقابل درخواست های دوگانه)

یک مشکل استاندارد در web-application ها پردازش مناسب درخواست های دوگانه (چندگانه) با دیتای یکسان است. سناریوهای ممکن عبارتند از:
1- refresh کردن صفحه جاری
2- انجام bakc-forward در صفحات وب
3 – کلیک کردن بیش از یکبار دکمه submit

درخواست های چندگانه می تواند اثرات جدی بر روی برخی application ها مانند خرید و فروش اینترنتی داشته باشد. راه حل های client-side برای رفع این مشکل، کامل نیستند. به عنوان مثال می توان توسط JavaScript، double click را بر روی submit غیرفعال کرد، مشروط بر اینکه کاربر JavaScript را در مرورگر خود فعال کرده باشد.
هر چند مشکل در مورد refresh و back- forward به قوه خود باقی است. و یا تنظیم هدرهای HTML تنها منجر به اعلام warning به کاربر می شود که می تواند از آن صرف نظر کند. تنها متد قابل اعتماد، حفاظت در طرف سرور است. راه حل ساده و اولیه، تولید شناسه های یکتا در پاسخ به درخواست های یک کاربر (هر session) و ارسال یه سرور توسط hidden fields و  مقایسه آن با id ذخیره شده در session است. در صورت یکسان بودن هر دو id، کاربر به صفحه خطا هدایت می شود. اما نمایش صفحه خطا چندان مطلوب نیست چون کاربر گزارش وضعیتی مناسبی در مورد عمل قبلی خود دریافت نمی کند. Response cache یک راه حل کلی مبتنی بر Servlet Filter است. کلیه درخواست ها به یک فیلتر ارسال می شود. در صورتی که درخواست برای اولین بار ارسال شده باشد پردازش توسط سرولت های مقصد انجام شده و نتیجه به کاربر ارسال و ضمنا در کش ذخیره می گردد. در صورت تکراری بودن، نتیجه قبلی از کش ارسال می شود.

– این library را می توانید از اینجا دانلود کنید.
منبع از گروه FINGO
– اطلاعات بیشتر در مورد Servlet Filter را می توانید در The Essentials of Filters بیابید.


دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *