یک اسکریپت PHP بنویسید که هدر HTTP به نام X-Filters را خوانده و بررسی کند که مقدار آن یک فهرست کاما-جدا از «فیلترهای مجاز» باشد (هر فیلتر تنها شامل حروف لاتین، اعداد، زیرخط یا خط تیره) و در صورت معتبر بودن آرایهای از فیلترها را بازگرداند؛ در غیر این صورت پیام خطا برگرداند؟
4.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:57 0.0
برای حل این مسئله در PHP از توابع رشتهای و عبارات منظم استفاده کنید: ابتدا مقدار هدر را با getallheaders() یا $_SERVER دریافت و از هرگونه کاراکتر کنترل (\r\n) برای جلوگیری از Header Injection پاکسازی کنید، سپس با preg_split('/\s*,\s*/') آن را به آیتمها تقسیم کنید و برای هر آیتم با یک regex مانند '/^[A-Za-z0-9_-]+$/' تطابق کامل را با preg_match بررسی کنید. همچنین با array_unique تکراریها را حذف کنید و در نهایت در صورت همهچیز درست بودن آرایه فیلترها را بازگردانید؛ نکات امنیتی: همیشه ورودی هدر را پاکسازی کنید، طول هر آیتم را محدود کنید و از توابع آماده PHP برای مدیریت خروجی استفاده نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای امنیت بیشتر، پس از دریافت هدر X-Filters آن را با حذف کاراکترهای کنترل (\r\n) و محدود کردن طول نامها پاکسازی کنید تا از header injection جلوگیری شود. آیتمها را با preg_split('/\s*,\s*/') جدا کرده و هر یک را با regex '/^[A-Za-z0-9_-]+$/' بررسی کنید تا تنها حروف لاتین، اعداد، خط تیره یا زیرخط مجاز باشند. تکراریها را با array_unique حذف کنید و در صورت معتبر بودن همه آیتمها آرایه فیلترها را بازگردانید، در غیر این صورت پیام خطا بدهید. نهایتاً از توابع آماده PHP برای مدیریت خروجی استفاده کنید و ورودی را به اندازه مناسب محدود کنید تا امنیت و کارایی حفظ شود.
گزارش