‹ بازگشت به کتابخانه‌ی رایت‌آپ‌ها
Race Condition شدت: بالا

استفاده‌ی مضاعف از یک کد تخفیف با ارسال همزمان چند درخواست

کلاسیک‌ترین نمونه‌ی Race Condition: ارسال ده‌ها درخواست همزمان برای دور زدن یک محدودیت «فقط یک‌بار».

نویسنده: تیم PentesterHub

اگر بررسی «آیا این کد قبلاً استفاده شده؟» و «ثبت استفاده‌شدن آن» دو عملیات جدا روی دیتابیس باشند (نه یک تراکنش اتمیک با قفل مناسب)، ارسال همزمان چند درخواست (مثلاً با Burp Turbo Intruder) می‌تواند باعث شود همه‌ی آن‌ها بررسی اول را «موفق» ببینند، پیش از آنکه هیچ‌کدام فرصت ثبت کرده باشد.

نحوه‌ی تست عملی

راه‌حل

استفاده از قفل دیتابیسی (مثل SELECT ... FOR UPDATE) یا یک constraint یکتا در سطح دیتابیس، به‌جای بررسی و ثبت در دو مرحله‌ی جدا.

تمرین عملی در آزمایشگاه‌های Race Condition ›