استفادهی مجدد از کد تخفیف یکبارمصرف با تغییر ترتیب درخواستها
چگونه ترتیب نامتعارف درخواستها میتواند یک فرض ضمنی برنامه را نقض کند.
فرض کنید یک کد تخفیف فقط یکبار باید اعمال شود و منطق برنامه آن را «بعد از پرداخت موفق» باطل میکند. اگر مهاجم بتواند با دستکاری پارامترها (مثل لغو سفارش بعد از دریافت تایید اما قبل از باطلشدن کد) همان کد را دوباره در یک سفارش جدید استفاده کند، این فرض نقض میشود.
نحوهی شناسایی
- فرآیند کامل checkout را چندینبار با ترتیبهای مختلف (لغو، بازگشت، تکرار) تست کنید.
- بهدنبال هر جایی باشید که «اعتبارسنجی» و «اعمال» یک قانون در دو مرحلهی جداگانه اتفاق میافتد.
راهحل
باطلکردن یک کد تخفیف باید اتمیک و همزمان با بررسی اعتبار آن باشد (مثلاً در یک تراکنش دیتابیسی)، نه در یک مرحلهی بعدی و مجزا.