یک تابع PHP بنویسید که یک آرایه از هدرهای دلخواه (نام=>مقدار) را با استفاده از filter_var_array و الگوهای Regex اعتبارسنجی و پاکسازی کند بهطوریکه نامها فقط حروف، اعداد و خط تیره داشته باشند و مقادیر شامل کاراکترهای CR یا LF نباشند.
6.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:16 0.0
برای حل این مسئله با PHP از filter_var_array و فیلتر FILTER_VALIDATE_REGEXP استفاده کنید: ابتدا برای هر نام هدر یک الگوی Regex برای نام (مثلاً '/^[A-Za-z0-9-]+$/') و برای مقدار یک الگو که از وجود CR/LF جلوگیری کند و طول معقولی محدود شود (مثلاً '/^[^\r\n]{0,1024}$/') بسازید، سپس آرایهٔ $filters را برنامهنویسی کنید و filter_var_array($headers, $filters) را اجرا کنید؛ نتایج null یا false یعنی نام یا مقدار نامعتبر است. نکات امنیتی: قبل از ارسال هدرها همیشه مقدارها را trim کرده و از وجود '\r' یا '\n' جلوگیری کنید تا از header injection مصون بمانید و طول مقادیر را محدود کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که استفاده از filter_var_array با فیلترهای REGEXP برای نامها و مقادیر، ورودیهای هدر را بهطور موثری پاکسازی و اعتبارسنجی میکند. برای نام هدر از الگویی مانند /^[A-Za-z0-9-]+$/ و برای مقدار از الگویی که شامل CR/LF نمیشود و طول معقولی دارد مثل /^[^\r\n]{0,1024}$/ استفاده کنید تا از header injection جلوگیری شود. در زمان اجرا، اگر نتیجهٔ فیلتر null یا false بود، بهمعنای نامعتبر بودن نام یا مقدار است و باید مدیریت شود. همچنین قبل از ارسال هدرها مقدارها را trim کنید و وجود کاراکترهای "\r" یا "\n" را بررسی کنید تا ایمنی افزایش یابد.
گزارش