Mass Assignment روی فیلد قیمت در فرم سفارش فروشگاه
وقتی یک فیلد مالی که هرگز باید سمت سرور محاسبه شود، بهاشتباه از ورودی کاربر قابلتنظیم میماند.
در یک فرم ثبت سفارش، قیمت نهایی باید همیشه سمت سرور از روی قیمت واقعی محصول در دیتابیس محاسبه شود. اگر مدل Order بهصورت mass-assignable از ورودی کاربر پر شود و فیلد total_price هم در آن allowlist باشد، مهاجم میتواند مستقیماً قیمت دلخواه خودش (مثلاً ۱۰۰۰ تومان بهجای ۱۰۰۰۰۰ تومان) را ارسال کند.
نحوهی شناسایی
- تمام فیلدهای عددی/مالی یک فرم سفارش را فهرست کنید.
- هرکدام را مستقیماً در بدنهی درخواست با مقدار دلخواه جایگزین کنید و ببینید آیا در رکورد نهایی ذخیرهشده اعمال میشود.
راهحل
فیلدهای محاسباتی/مالی هرگز نباید در allowlist فیلدهای قابلپذیرش از کاربر قرار گیرند؛ باید همیشه سمت سرور، از منبع معتبر (قیمت واقعی محصول)، بازمحاسبه شوند.