یک اسکریپت 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 برای مدیریت خروجی استفاده نمایید.

توسط پژوهشگر در 202 روز قبل ساعت 02:57
دسته بندی ها: PHP PHP for beginner
arash در 202 روز قبل ساعت 07:59

برای امنیت بیشتر، پس از دریافت هدر X-Filters آن را با حذف کاراکترهای کنترل (\r\n) و محدود کردن طول نام‌ها پاکسازی کنید تا از header injection جلوگیری شود. آیتم‌ها را با preg_split('/\s*,\s*/') جدا کرده و هر یک را با regex '/^[A-Za-z0-9_-]+$/' بررسی کنید تا تنها حروف لاتین، اعداد، خط تیره یا زیرخط مجاز باشند. تکراری‌ها را با array_unique حذف کنید و در صورت معتبر بودن همه آیتم‌ها آرایه فیلترها را بازگردانید، در غیر این صورت پیام خطا بدهید. نهایتاً از توابع آماده PHP برای مدیریت خروجی استفاده کنید و ورودی را به اندازه مناسب محدود کنید تا امنیت و کارایی حفظ شود.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری