احتمال بروز SQL injection در مواقعی که ورودی کنترل شده توسط کاربر به عنوان پارامتر”exclude ID”مربوط بهrule unique لاراول عبور میکنند:
مثال:1
Rule::unique('users')->ignore($request->input('id'))
ویژگی “exclude ID” قانون unique در لاراول برای این است که فقط ID های تولید شده توسط سیستم پذیرفته شوند. مانند ID های افزایشی یا UUID های ساخته شده توسط برنامه، که این تنها توصیف استفاده از قانون مطابق مستندات است:1
Rule::unique('users')->ignore($user->id)
با این حال اگه از شیوهی استفادهی ذکر شده در مستندات تخطی شده و اجازه داده شود دادههای کنترل شده توسط کاربر، مقدار یا ستون مربوط به “exclude ID” را تعیین کند، یک درخواست malicious میتواند منجر به حملهی SQL injection شود.
در نتیجه به مستندات قانون unique validation “اخطار قرمز” داده شده به این منظور که مشخص شود از این قانون فقط و فقط طبق مستندات باید استفاده شود و …
Framework نیز ممکنه میتواند به نحوی از SQL injection در مواقعی که توسعهدهنده تصادفا اجازه میدهد ورودی های کنترل شده توسط کاربر به این قانون فرستاده شود پیشگیری کند که این مورد در انتشار بعدی لاراول مطرح خواهد شد.
مستندات مربوطه: